我有一个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)
保存原始图像。
如何保存绘制了轮廓的图像?
它与原始图像的透明度有关,即轮廓所在的地方
在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)