通过opencv删除图像上的去聚焦区域
我有一个图像和两个区域(聚焦区域和去聚焦区域)。我使用开放CV,我想检测附近区域。 我在OpenCV或Canny检测器中应用分水岭来检测对象。但物体包括近区和远区 所以,我需要任何人的想法或帮助,帮助我应用OpenCV检测近区域图像 显示图像的代码,我附加通过opencv删除图像上的去聚焦区域,opencv,image-processing,focus,feature-detection,Opencv,Image Processing,Focus,Feature Detection,我有一个图像和两个区域(聚焦区域和去聚焦区域)。我使用开放CV,我想检测附近区域。 我在OpenCV或Canny检测器中应用分水岭来检测对象。但物体包括近区和远区 所以,我需要任何人的想法或帮助,帮助我应用OpenCV检测近区域图像 显示图像的代码,我附加 private Mat CalculateMapStrength(Mat inputMat){ Imgproc.cvtColor(inputMat,inputMat, Imgproc.COLOR_RGBA2GRAY); //C
private Mat CalculateMapStrength(Mat inputMat){
Imgproc.cvtColor(inputMat,inputMat, Imgproc.COLOR_RGBA2GRAY);
//Compute dx and dy derivatives
Mat dx = new Mat();
Mat dy = new Mat();
Imgproc.Sobel(inputMat, dx, CV_32F, 1, 0);
Imgproc.Sobel(inputMat, dy, CV_32F, 0, 1);
Core.convertScaleAbs(dx,dx);
Core.convertScaleAbs(dy,dy);
Mat outputMat = new Mat();
Core.addWeighted(dx,0.5,dy,0.5,0,outputMat);
return outputMat;
}
另外,在OpenCV中,利用分水岭算法对图像进行分割。我可以为检测对象编译2个结果吗?如何编译
public Mat steptowatershed(Mat img)
{
Mat threeChannel = new Mat();
Imgproc.cvtColor(img, threeChannel, Imgproc.COLOR_BGR2GRAY);
Imgproc.threshold(threeChannel, threeChannel, 100, 255, Imgproc.THRESH_BINARY);
Mat fg = new Mat(img.size(),CvType.CV_8U);
Imgproc.erode(threeChannel,fg,new Mat());
Mat bg = new Mat(img.size(),CvType.CV_8U);
Imgproc.dilate(threeChannel,bg,new Mat());
Imgproc.threshold(bg,bg,1, 128,Imgproc.THRESH_BINARY_INV);
Mat markers = new Mat(img.size(),CvType.CV_8U, new Scalar(0));
Core.add(fg, bg, markers);
Mat result1=new Mat();
WatershedSegmenter segmenter = new WatershedSegmenter();
segmenter.setMarkers(markers);
Imgproc.cvtColor(img, img, Imgproc.COLOR_RGBA2RGB);
result1 = segmenter.process(img);
return result1;
}
public class WatershedSegmenter
{
public Mat markers=new Mat();
public void setMarkers(Mat markerImage)
{
markerImage.convertTo(markers, CvType.CV_32SC1);
}
public Mat process(Mat image)
{
Imgproc.watershed(image,markers);
markers.convertTo(markers,CvType.CV_8U);
return markers;
}
}
请发布您的代码以帮助他人帮助您。另请参见:。我刚刚更新了我攻击的show image的函数。现在,我可以通过OpenCV的Canny检测功能检测边缘。但是,我不知道如何去除图像中的远区,我使用阈值来去除去焦对象。但我不能结合两个结果来获得图像的焦点区域。有人能帮我吗?谢谢