我的图像有“光反射”,图像上的前两个零与图像的其余部分有一些不同的光。当我将其转换为二进制图像时,这部分变成白色,我需要获得数字的精确轮廓,这会阻碍。我可以使用 OpenCV 解决这个问题吗?
原始图像https://docs.google.com/file/d/0BzUNc6BOkYrNNlE3U04wWEVvVE0/edit?usp=sharing https://docs.google.com/file/d/0BzUNc6BOkYrNNlE3U04wWEVvVE0/edit?usp=sharing
二进制版本https://docs.google.com/file/d/0BzUNc6BOkYrNeEE0U3NvOElqa1E/edit?usp=sharing https://docs.google.com/file/d/0BzUNc6BOkYrNeEE0U3NvOElqa1E/edit?usp=sharing
如果我增加阈值,我就会丢失图像右侧的数字。我的代码:
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main ( int argc, char **argv )
{
Mat im_gray = imread("img2.jpg",CV_LOAD_IMAGE_GRAYSCALE);
Mat im_rgb = imread("img2.jpg");
cvtColor(im_rgb,im_gray,CV_RGB2GRAY);
Mat img_bw = im_gray > 90;
imwrite("image_bw2.jpg", img_bw);
return 0;
}
阴影和眩光并不是容易处理的问题。但只要做好一些工作,这些问题就可以克服。
另一个步骤是使用阈值图像作为掩模来获取另一个阈值图像。以下是一些对我有用的标准:
- 限制中间(您现在拥有的)阈值图像的直方图中包含的像素中除主峰之外的所有像素
- 使用导数找到边界(cvSobel 可能有帮助)
- 结合使用严格的自适应和自由的硬阈值来考虑图像不同部分的不同照明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)