Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 使用Catalano框架获取Blob信息_Android_Image Processing_Frameworks - Fatal编程技术网

Android 使用Catalano框架获取Blob信息

Android 使用Catalano框架获取Blob信息,android,image-processing,frameworks,Android,Image Processing,Frameworks,我正在开发一个应用程序来检测图像中的斑点或物体。我想用边界框从主图像中提取斑点图像。我该怎么办?或者我怎样才能得到斑点的宽度或高度。我的代码: btn_process.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { FastBitmap fb, Greench, Redch; imageV

我正在开发一个应用程序来检测图像中的斑点或物体。我想用边界框从主图像中提取斑点图像。我该怎么办?或者我怎样才能得到斑点的宽度或高度。我的代码:

     btn_process.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            FastBitmap fb, Greench, Redch;
            imageView1.setImageURI(null);
            imageView1.setImageURI(selectedImageUri);
            Bitmap asli = ((BitmapDrawable) imageView1.getDrawable()).getBitmap();
            fb=new FastBitmap(asli);
            ExtractRGBChannel grayGreen=new ExtractRGBChannel(ExtractRGBChannel.Channel.G);
            ExtractRGBChannel grayRed=new ExtractRGBChannel(ExtractRGBChannel.Channel.R);
            Greench=grayGreen.Extract(fb);
            Redch=grayRed.Extract(fb);
            Subtract sub=new Subtract();
            sub.setOverlayImage(Greench);
            sub.applyInPlace(Redch);
            OtsuThreshold otst=new OtsuThreshold();
            otst.applyInPlace(Redch);

            BlobDetection blobDetect=new BlobDetection();
            ArrayList<Blob> blobs=blobDetect.ProcessImage(Redch);
            ExtractBlob eBlobs = new ExtractBlob(blobs);
            Redch = eBlobs.Extract(blobDetect.getIdBiggestBlob(), Redch); 
                            // by this i am reach the biggest blob but with height and width of main image. but i need crop blob image in blob size.



            imageView1.setImageURI(null);
            imageView1.setImageBitmap(Redch.toBitmap());



        }

    });
btn\u进程。setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
FastBitmap fb、Greench、Redch;
imageView1.setImageURI(空);
imageView1.setImageURI(selectedImageUri);
位图asli=((BitmapDrawable)imageView1.getDrawable()).getBitmap();
fb=新的快速位图(asli);
ExtractRGBChannel灰绿色=新的ExtractRGBChannel(ExtractRGBChannel.Channel.G);
ExtractRGBChannel灰红色=新的ExtractRGBChannel(ExtractRGBChannel.Channel.R);
Greench=灰绿色。提取(fb);
Redch=灰红色。提取(fb);
Subtract sub=新的Subtract();
sub.setOverlayImage(格林奇);
sub.applyInPlace(Redch);
OtsuThreshold otst=新的OtsuThreshold();
otst.applyInPlace(红色);
BlobDetection blobDetect=新的BlobDetection();
ArrayList blobs=blobDetect.ProcessImage(Redch);
ExtractBlob eBlobs=新的ExtractBlob(Blob);
Redch=eBlobs.Extract(blobDetect.getIdBiggestBlob(),Redch);
//通过这个,我达到了最大的水滴,但高度和主图像的宽度。但我需要裁剪水滴大小的水滴图像。
imageView1.setImageURI(空);
设置图像位图(Redch.toBitmap());
}
});

我也在代码项目中回答了。我在桌面版上做这个,你可以在安卓上适应。在下一个版本(1.3)中,我将在这两种环境中都做一个示例

FastBitmap image=newfastBitmap(“c:\\files\\blob.png”);
image.toGrayscale();
阈值t=新阈值();
t、 applyInPlace(图像);
BlobDetection bd=新BlobDetection();
ArrayList blobs=bd.ProcessImage(图像);
image.toRGB();
Graphics g=image.getGraphics();
g、 setColor(Color.red);
用于(Blob Blob:Blob){
ArrayList lst=pointsLoud.GetBoundingRectangle(blob.getPoints());
int height=Math.abs(lst.get(0.x-lst.get(1.x));
int width=Math.abs(lst.get(0.y-lst.get(1.y));
g、 drawRect(lst.get(0.y),lst.get(0.x,宽度,高度);
}
showMessageDialog(null,image.toIcon());
FastBitmap image = new FastBitmap("c:\\files\\blob.png");
image.toGrayscale();

Threshold t = new Threshold();
t.applyInPlace(image);

BlobDetection bd = new BlobDetection();
ArrayList<Blob> blobs = bd.ProcessImage(image);

image.toRGB();
Graphics g = image.getGraphics();
g.setColor(Color.red);

for (Blob blob : blobs) {
    ArrayList<IntPoint> lst = PointsCloud.GetBoundingRectangle(blob.getPoints());

    int height = Math.abs(lst.get(0).x - lst.get(1).x);
    int width = Math.abs(lst.get(0).y - lst.get(1).y);

    g.drawRect(lst.get(0).y, lst.get(0).x, width, height);
}

JOptionPane.showMessageDialog(null, image.toIcon());