我有一个问题,在黑色硬币内填充白洞,以便我只能有0-255二进制图像与填充黑色硬币..我使用中位数过滤器来完成它但在那种情况下硬币之间的连接桥增长,这是不可能的经过几次侵蚀后识别它们......所以我需要在opencv中使用简单的floodFill方法
这是我带孔的图片:
编辑:类似函数的floodfill必须填充大组件中的空洞而不提示X,Y坐标作为种子......
编辑:我试图使用cvDrawContours函数,但我没有在更大的内部填充轮廓.
这是我的代码:
CvMemStorage mem = cvCreateMemStorage(0);
CvSeq contours = new CvSeq();
CvSeq ptr = new CvSeq();
int sizeofCvContour = Loader.sizeof(CvContour.class);
cvThreshold(gray, gray, 150, 255, CV_THRESH_BINARY_INV);
int numOfContours = cvFindContours(gray, mem, contours, sizeofCvContour, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
System.out.println("The num of contours: "+numOfContours); //prints 87, ok
Random rand = new Random();
for (ptr = contours; ptr != null; ptr = ptr.h_next()) {
Color randomColor = new Color(rand.nextFloat(), rand.nextFloat(), rand.nextFloat());
CvScalar color = CV_RGB( randomColor.getRed(), randomColor.getGreen(), randomColor.getBlue());
cvDrawContours(gray, ptr, color, color, …
Run Code Online (Sandbox Code Playgroud)