我需要在图像中找到最大的矩形,但是当我找到轮廓时,阴影会成为轮廓的一部分。
任何关于如何删除/最小化阴影的建议。
原始图像
带轮廓的图像
通常,您首先使用自适应阈值对图像进行二值化以去除阴影。
使用AdaptiveThreshold而不是普通的Otsu Thresholding,我能够用 OpenCV Java for Android 解决同样的问题
您可以使用像 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() 来查找矩形。