提问者:小点点

OpenCV drawContours未保存


我有一个RGBA图像,我想为它绘制轮廓,并保存轮廓绘制。 我有以下代码:

skin = cv.imread("-path-", cv.IMREAD_UNCHANGED)

_, mask = cv.threshold(skin[:, :, 3], 0, 255, cv.THRESH_BINARY)

contours, hierarchy = cv.findContours(mask, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)

largest_contour = max(contours, key=cv.contourArea)

skin = cv.drawContours(skin, [largest_contour], 0, (0, 255, 0), 3)

如果我使用

cv.imshow("-title-", skin)

我能看到轮廓,但如果我看到:

cv.imwrite("-path-", skin)

保存原始图像。

如何保存绘制了轮廓的图像?

它与原始图像的透明度有关,即轮廓所在的地方


共2个答案

匿名用户

在OpenCV中,您有cv2.imwrite()函数。

将轮廓所在的图像存储到变量。

这么说吧

new_skin = drawContours(skin,[largest_contour], 0, (0, 255, 0), 3) # store in new variable
cv2.imwrite("newskin.png",new_skin) # save to file

尝试此操作在本地保存图像。

匿名用户

这是透明的轮廓,我不知道为什么,但它照亮了我后,张贴。

解决办法是添加以下一行:

skin[:, :, 3] = cv.drawContours(skin[:, :, 3].astype(np.uint8), [largest_contour], 0, (255), 3)