我在图像处理中遇到了这个问题,我找不到解决这个问题的算法。它很容易理解,但我不知道如何在OpenCV
或在Matlab
所以任何算法或函数其中之一(MATLAB或opencv)是有用的。在边缘图像中查找最大轮廓的像素
。假设我有一个image
和背景的场景像下面
。我将边缘检测器应用到image
,我的current image
将如下图所示。
我Problm是,如何找到最大的轮廓或区域象下面这样edge
形象?
,并在Matlab你可以通过下面的代码获得边缘图像。
clc
clear
img = imread('1.png'); % read Image
gray = rgb2gray(img); % Convert RGB to gray-scale
edgeImage = edge(gray,'canny',0.09); % apply canny to gray-scale image
imshow(edgeImage) % Display result in figure(MATLAB)
OpenCV中您可以使用下面的代码
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("1.png");
Mat gray;
cvtColor(img, //BGR form image
gray, //Mat for gray(destination)
CV_BGR2GRAY); //type of transform(in here BGR->GRay)
Mat edgeImage;
Canny(gray, //Input Array
edgeImage, //Output Array
40, // Lower threshold
120); //Upper threshold
namedWindow("Edge-Image"); //create a window for display image
imshow("Edge-Image",edgeImage); //Display edgeImage in window that in before line create
waitKey(0); //stick display window and wait for any key
return 0;
}
你应该提供你的输入图像,以便其他人可以处理它们,如果他们愿意 – Piglet
@Piglet感谢您的评论,但这幅图像从一篇文章中剪切出来,在那篇文章中,作者没有解释他们是如何识别这个区域的,所以很不幸我没有它,但是我认为如果你将边缘检测器应用于大多数图像,轮廓。但如果这可以帮助我裁剪文章中的图像 –