Opencv 具有与背景颜色相同字体的背景检测
我有如下图片(这是红色背景上的白色数字。这个数字里面有两条细细的红线) 我想接收以下图像(删除红色背景,但不要删除图中的两条红线) 我试着用OpenCV中的convexHull,但是,很明显,这种方法只适用于凸面图形。我觉得卷积在这方面可能有所帮助,但还没有真正的想法。建议:)Opencv 具有与背景颜色相同字体的背景检测,opencv,image-processing,detection,feature-detection,Opencv,Image Processing,Detection,Feature Detection,我有如下图片(这是红色背景上的白色数字。这个数字里面有两条细细的红线) 我想接收以下图像(删除红色背景,但不要删除图中的两条红线) 我试着用OpenCV中的convexHull,但是,很明显,这种方法只适用于凸面图形。我觉得卷积在这方面可能有所帮助,但还没有真正的想法。建议:) 只是 Convxhull按名字说的做但有一个同伴 呵呵,它看起来像是圆的卷积,圆的直径略大于线的厚度(例如8个像素)! 因此,算法如下所示: 与直径略大于直线的圆卷积 厚度 规格化卷积,您对值感兴趣 大于0.95-
- 只是
- Convxhull按名字说的做但有一个同伴
扩张和侵蚀应适用于您的示例:
Mat image = imread("image1.jpg");
int erosion_size = 5;
int dilation_size = 6;
int threshold_value = 200;
Mat mask;
cvtColor( image, mask, CV_BGR2GRAY );
//BINARY THRESHOLDING
threshold( mask, mask, threshold_value, 255, 0);
Mat erosion_element = getStructuringElement(MORPH_RECT, Size( 2*erosion_size + 1, 2*erosion_size+1 ), Point( erosion_size, erosion_size ) );
Mat dilation_element = getStructuringElement(MORPH_RECT, Size( 2*dilation_size + 1, 2*dilation_size+1 ), Point( dilation_size, dilation_size ) );
dilate(mask, mask, erosion_element);
erode(mask, mask, dilation_element);
Mat target;
image.copyTo(target, mask);
imshow("hello",target);
waitKey();
输出:
berak,从(0,0)点用黑色填充也将用黑色填充红线:)注意,这些红线与图左侧的背景没有任何像素分开。啊,好的。很抱歉完全倒过来了。我应该删除它吗?np,你可以把它留到历史上:)无论如何,谢谢你的时间!