如何同时使用 opencv 绘制多条线?

How can I draw multiple lines with opencv, at the same time?

我正在使用 opencv 来识别一些行,并得到一个返回的 numpy 数组,如下所示:

print(lines)
print(type(lines))

[[[884 605 894 605]]

 [[854 603 899 603]]

 [[864 606 883 606]]

 [[679 401 697 401]]

 [[751 551 787 551]]

 [[764 554 777 554]]

 [[664 404 679 404]]]
<class 'numpy.ndarray'>

当我将它传递给 cv2.polylines 时,它不绘制任何东西。我尝试过的事情包括解压 ndarray,在循环中使用 cv2.line,在循环中使用 cv.rectangle,从数组中创建一个全新的 python 列表。

到目前为止,只有线条和矩形可以绘制任何东西,但它们不会一次性在图像上绘制,这就是我希望多段线起作用的原因。作为参考,我是连续截图的,每张截图只画了一个东西,而不是所有的线。


    def drawlines(original_img, lines):
        try:

            img = cv.polylines(original_img, [lines], False, (0, 255, 0), 4)
            return img
        
        except:
            return original_img

是这样的吗?:

def drawlines(original_img, lines):
        try:
            isClosed = True
            color = (0, 255, 0)
            thickness = 2

            points = []
            for line in lines:
                points.append([line[0][0], line[0][1]])
                points.append([line[0][2], line[0][3]])
                points = np.array(points, np.int32).reshape((-1, 1, 2))

                img = cv.polylines(original_img, [points], isClosed, color, thickness)
            return img

        except:
            return original_img

更多信息: https://www.geeksforgeeks.org/python-opencv-cv2-polylines-method/