【发布时间】:2016-01-06 07:02:17
【问题描述】:
我正在尝试根据this one 和文档等教程了解findContours 的输出。我想知道为什么我会得到我得到的输出。 我有一个 jpeg img,中间有一个正方形,我的目标是找到正方形并为其着色(只是为了更好地理解 openCv 的轮廓功能)。 我是这样加载的:
# Load a colored image
img = cv2.imread('test_image.jpg')
#Make it gray
imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#reducing noise
ret,thresh = cv2.threshold(imgray,127,255,0)
#RETR_TREE make nested contours
#CHAIN_APPROX_SIMPLE compresses horizontal, vertical, and diagonal segments and leaves only their end points.
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
现在我的图片中心有一个正方形,边框为 6 像素。 它的外边界大致在 (970,634), (1658,634), (1658,1328), (970,1328)
我的问题是返回的轮廓是以下3个:
第一个好像是整个图片维度
[[[1 1]]
[[1 3506]]
[[2478 3506]]
[[2478 1]]]
这个似乎有正方形坐标,但每个点都有重复的 1px 差异
[[[970 635]]
[[971 634]]
[[1658 634]]
[[1659 635]]
[[1659 1328]]
[[1658 1329]]
[[ 971 1329]]
[[ 970 1328]]]
最后一个看起来有内部轮廓
[[[977 641]]
[[977 1322]]
[[1652 1322]]
[[1652 641]]]
我不明白为什么这些输出是这样的,也没有在文档中找到任何关于我为什么会获得完整文档大小的信息。
【问题讨论】: