如何使用OpenCV从遮罩数组中检测轮廓及其边界框

时间:2019-03-26 22:39:14

标签: opencv-contour

我有一个numpy数组,其中的值分别为0和1。1表示我的数组中是否有对象,而0表示没有对象。我试图将numpy数组用作cv2图像,然后找到轮廓。我试图将一个numpy数组转换为cv2图像,但是我得到的解决方案对我不起作用。我尝试的代码是-

import argparse
import imutils
import cv2


# find the contours in the mask
cnts = cv2.findContours(water_mask.copy(), 
cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
print("I found {} black shapes".format(len(cnts)))
cv2.imshow("Mask", shapeMask)

# loop over the contours
for c in cnts:
# draw the contour and show it
    cv2.drawContours(image, [c], -1, (0, 255, 0), 2)
    cv2.imshow("Image", image)
    cv2.waitKey(0)

在此代码中,water_mask是我的数组。This is the image if I plot my numpy array as an image

预期结果是检测我的numpy数组中的每个对象,并在其周围找到边界框。我认为我的代码中存在一些问题,所以谁能告诉我问题出在哪里?我认为一旦轮廓正确,就可以从中绘制边界框。

0 个答案:

没有答案