我试图从右边的图像中拉出所有像素的像素。我决定对图像进行边缘检测,但现在我需要制作一个遮罩,这样我就可以抓住所有由鞋子外轮廓限定的像素。 opencv中有没有办法做到这一点?我查看了findContours函数,但是这只给了我一堆轮廓而无法制作一个蒙版?
答案 0 :(得分:2)
如果floodfill没有为您提供足够的遮罩,另一种方法可能是从图1中获取边缘图像并应用扩张操作符然后应用关闭操作符。由于膨胀,面罩会略大于原件,尽管扩张有助于在应用关闭操作器时关闭黑点。
这是我获得的结果(我没有足够高的代表在答案中发布图像。这是链接): http://tinypic.com/view.php?pic=33jmpao&s=8#.U_cHm_mSz9s
以下链接也可能对您有用。 http://docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html
我使用的代码:
// Dilation
Mat se = getStructuringElement(CV_SHAPE_ELLIPSE, Size(9, 9));
dilate(edge_image, dst, se, Point(-1,-1), 1);
// Closing
Mat closed;
Mat element = getStructuringElement(MORPH_ELLIPSE, Size(19, 19));
morphologyEx(dst, closed, MORPH_CLOSE, element, Point(-1,-1), 3);
这是我在stackoverflow上的第一个答案。我希望它有所帮助,祝你好运! :)