3

我需要在图像中找到最大的矩形,但是当我找到轮廓时,阴影会成为轮廓的一部分。

任何关于如何删除/最小化阴影的建议。

原始图像

在此处输入图像描述

带轮廓的图像

在此处输入图像描述

4

3 回答 3

1

通常,您首先使用自适应阈值对图像进行二值化以去除阴影。

来源与示例

于 2015-07-22T11:24:33.787 回答
1

使用AdaptiveThreshold而不是普通的Otsu Thresholding,我能够用 OpenCV Java for Android 解决同样的问题

于 2016-04-13T12:22:07.957 回答
0

您可以使用像 Canny 这样的边缘检测器:

cv::Mat image = cv::imread( "C:/Users/John/Documents/StackOverflow/t8keM.png" );
cv::Mat gray_image, dst, color_dst;

cvtColor( image, gray_image, CV_BGR2GRAY );
Canny( gray_image, dst, 50, 200, 3 );
cvtColor( dst, color_dst, CV_GRAY2BGR );

cv::imshow( "image", image );
cv::imshow( "canny", color_dst );

cv::waitKey();

结果: 在此处输入图像描述

之后,您可以使用 cv::findContours() 来查找矩形。

于 2015-07-25T13:45:03.047 回答