opencv python计算一组轮廓的第二个时刻

时间:2016-07-27 10:46:25

标签: python opencv image-processing

我想要计算具有大量轮廓的图像的二阶矩和体积分数。 我一直在研究cv2.findcontours函数以及cv2.connectedComponents以解决我的问题,但没有成功。 这是目标图片:image with a huge number of contours,但我创建下面的图片作为示例:image as example 例如,在三角形1上,它的体积分数是没有的,它的时刻是0;在三角形2上,它的体积分数是100%,它的矩最大,在三角形3上,可能是体积分数的30%,其时刻未知,等等所有三角形。

我认为使用仅包含三角形的image会很有用,然后使用两者。 如果我使用findCountour,我将获得所有轮廓,而不仅仅是三角形。 如果我使用connectedComponents,我不会得到所有三角形。 我只是在这里添加一些代码,但我认为这并不重要,我的主要困难是它的问题方法。

#!/usr/bin/python
import cv2
import numpy as np

imMesh = cv2.imread('testLayer6_.png', -1)
imTriangles = cv2.imread('new_refined2__DXF.png', -1)

imGrayMsh = cv2.cvtColor(imMesh, cv2.COLOR_BGR2GRAY)
(thresh, imMesh_bw) = cv2.threshold(imGrayMsh, 128, 255,
                                  cv2.THRESH_BINARY | cv2.THRESH_OTSU)
imGrayTri = cv2.cvtColor(imTriangles, cv2.COLOR_BGR2GRAY)
ret, imTri_bw = cv2.threshold(imGrayTri, 250, 255, cv2.THRESH_BINARY)
connectivity = 4
output = cv2.connectedComponentsWithStats(imTri_bw, connectivity, cv2.CV_32S)
num_labels = output[0]
labels = output[1]
stats = output[2]
centroids = output[3]

_, contours, hier_ = cv2.findContours(imTri_bw, cv2.RETR_TREE,
                                  cv2.CHAIN_APPROX_SIMPLE)

我希望你能帮我解决这个问题!

0 个答案:

没有答案