Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取非闭合轮廓_C++_Opencv_Image Processing - Fatal编程技术网

C++ 获取非闭合轮廓

C++ 获取非闭合轮廓,c++,opencv,image-processing,C++,Opencv,Image Processing,我在OpenCV C++中使用了FieldTrof方法。问题是,我得到的轮廓似乎是非闭合的,一条直线或曲线,但当我检查像素时,它们是重复的,有时是闭合的。例如: 1,1 2,2 3,3 4,4 3,3 2,2 1,1 1,1 2,2 3,3 4,4 3,3 2,2 我试图得到一半的输出像素,但我意识到这个问题并不总是发生!有时结果并不是双重的。此外,我提到的例子非常理想。有时,起点和终点不一样。例如: 1,1 2,2 3,3 4,4 3,3 2,2 1,1 1,1 2,2 3,3

我在OpenCV C++中使用了FieldTrof方法。问题是,我得到的轮廓似乎是非闭合的,一条直线或曲线,但当我检查像素时,它们是重复的,有时是闭合的。例如:

1,1
2,2
3,3
4,4
3,3
2,2
1,1  
1,1
2,2
3,3
4,4
3,3
2,2
我试图得到一半的输出像素,但我意识到这个问题并不总是发生!有时结果并不是双重的。此外,我提到的例子非常理想。有时,起点和终点不一样。例如:

1,1
2,2
3,3
4,4
3,3
2,2
1,1  
1,1
2,2
3,3
4,4
3,3
2,2
代码是:

cv::findContours(canny_output, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_NONE, cv::Point(0, 0));
提前感谢:)

进一步解释: 我在图像上应用轮廓(canny输出),然后我想根据数学标准过滤这些轮廓。为了能够使用这些标准,我需要知道每个轮廓的每个像素的坐标(x,y)。 当我查看轮廓的像素时,它似乎是这样的:

  1,1
    2,2
    3,3
    4,4
    3,3
    2,2
    1,1  
1,1
2,2
3,3
4,4
换句话说,这条线是双倍的(两条相同的线相互重叠)。 为了克服这个问题,我尝试简单地删除一半像素,以获得如下效果:

  1,1
    2,2
    3,3
    4,4
    3,3
    2,2
    1,1  
1,1
2,2
3,3
4,4
这种方法在某些轮廓上效果很好,但我意识到有些轮廓会以嘈杂的方式加倍,如:

我怎样才能解决这个问题。
非常感谢

你的问题很难理解。您所说的“似乎是非闭合的”、“像素是重复的”、“获得一半的输出像素”、“结果不是双精度的”、“理想示例”是什么意思???到底是什么问题?你能提供数据吗?@Triarion谢谢你的反馈,我将提供一些information@Trilarion我希望现在有点清楚,非常感谢:)为什么需要一个无孔的封闭阵列?(绘制轮廓将至少导致图像中的闭合轮廓)@berak我需要它用于线性检查和其他一些标准