Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用Android中的任何库分离图像中的对象_Android_Image_Object_Detection - Fatal编程技术网

不使用Android中的任何库分离图像中的对象

不使用Android中的任何库分离图像中的对象,android,image,object,detection,Android,Image,Object,Detection,我正在创建一个应用程序,它可以检测图像中的圆/点(可能是不规则的)。为了检测它,我将RGB图像转换为二进制。使用阈值,我得到了下面给出的示例二值图像 在图中,我想消除两个较大的形状,并检测小点/圆,而不使用任何像OpenCV4android这样的库。请帮我解决这个问题 以下是将图像转换为二进制的程序: public class MainActivity extends Activity { ImageView img; Button btn; @Override

我正在创建一个应用程序,它可以检测图像中的圆/点(可能是不规则的)。为了检测它,我将RGB图像转换为二进制。使用阈值,我得到了下面给出的示例二值图像

在图中,我想消除两个较大的形状,并检测小点/圆,而不使用任何像OpenCV4android这样的库。请帮我解决这个问题

以下是将图像转换为二进制的程序:

public class MainActivity extends Activity {

    ImageView img;
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = (Button)findViewById(R.id.button);

        //convert imageview to bitmap
        img =(ImageView) findViewById(R.id.imageView);
        BitmapDrawable drawable = (BitmapDrawable) img.getDrawable();
        final Bitmap imgbitmap = drawable.getBitmap();


        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //convert bitmap to grayscale
                Bitmap imgnew;
                imgnew = toGrayscale(imgbitmap);
                //convert to binary
                imgnew = toBinary(imgnew);

                //convert bitmap to imageview
                ImageView imgbit;
                imgbit = (ImageView) findViewById(R.id.imageView2);
                imgbit.setImageBitmap(imgnew);
            }
        });

    }

    public Bitmap toGrayscale(Bitmap bmpOriginal){
        int width, height;
        height = bmpOriginal.getHeight();
        width = bmpOriginal.getWidth();

        Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
        Canvas c = new Canvas(bmpGrayscale);
        Paint paint = new Paint();
        ColorMatrix cm = new ColorMatrix();
        cm.setSaturation(0);
        ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
        paint.setColorFilter(f);
        c.drawBitmap(bmpOriginal, 0, 0, paint);
        return bmpGrayscale;
    }


    public Bitmap toBinary(Bitmap bmpOriginal) {
        int width, height, threshold;
        height = bmpOriginal.getHeight();
        width = bmpOriginal.getWidth();
        threshold = 65;
        Bitmap bmpBinary = Bitmap.createBitmap(bmpOriginal);

        for(int x = 0; x < width; ++x) {
            for(int y = 0; y < height; ++y) {
                // get one pixel color
                int pixel = bmpOriginal.getPixel(x, y);
                int red = Color.red(pixel);

                //get binary value
                if(red < threshold){
                    bmpBinary.setPixel(x, y,0xFFFFFFFF );
                } else{
                    bmpBinary.setPixel(x, y,0xFF000000 );
                }

            }
        }
        return bmpBinary;
    }

}
公共类MainActivity扩展活动{
图像视图img;
按钮btn;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
按钮btn=(按钮)findViewById(R.id.Button);
//将imageview转换为位图
img=(ImageView)findViewById(R.id.ImageView);
BitmapDrawable drawable=(BitmapDrawable)img.getDrawable();
最终位图imgbitmap=drawable.getBitmap();
btn.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
//将位图转换为灰度
位图imgnew;
imgnew=总体比例(imgbitmap);
//转换成二进制
imgnew=托比纳里(imgnew);
//将位图转换为imageview
图像视图imgbit;
imgbit=(ImageView)findViewById(R.id.imageView2);
imgbit.setImageBitmap(imgnew);
}
});
}
公共位图toGrayscale(位图bmpOriginal){
int宽度、高度;
高度=bmpOriginal.getHeight();
宽度=bmpOriginal.getWidth();
位图bmpGrayscale=Bitmap.createBitmap(宽度、高度、Bitmap.Config.RGB_565);
画布c=新画布(bmpGrayscale);
油漆=新油漆();
ColorMatrix cm=新的ColorMatrix();
cm.设定饱和度(0);
ColorMatrixColorFilter f=新的ColorMatrixColorFilter(厘米);
油漆。设置颜色过滤器(f);
c、 drawBitmap(bmpOriginal,0,0,paint);
返回bmpGrayscale;
}
公共位图toBinary(位图bmpOriginal){
整数宽度、高度、阈值;
高度=bmpOriginal.getHeight();
宽度=bmpOriginal.getWidth();
阈值=65;
位图bmpBinary=Bitmap.createBitmap(bmpOriginal);
对于(int x=0;x