python opencv 输入二值图像为img for contour in invalid_contours: 如何令轮廓在原图的位置为黑色
时间: 2024-02-27 14:59:14 浏览: 68
你可以使用cv2.drawContours()函数将指定的轮廓绘制在原图上,然后通过对这个绘制了轮廓的图像取反来得到你需要的结果。具体的实现步骤如下:
1. 使用cv2.drawContours()函数将轮廓绘制在原图上,可以通过设置参数thickness=-1来让轮廓内部被填充为白色,外部为黑色,代码如下:
```
cv2.drawContours(img, [contour], 0, (255, 255, 255), thickness=-1)
```
2. 对绘制了轮廓的图像进行取反操作,即将白色变为黑色,黑色变为白色,可以使用cv2.bitwise_not()函数实现,代码如下:
```
img = cv2.bitwise_not(img)
```
这样,你就可以得到轮廓在原图的位置为黑色的图像了。完整的代码示例如下:
```
import cv2
# 读取二值图像
img = cv2.imread('binary_image.png', cv2.IMREAD_GRAYSCALE)
# 找到轮廓
ret, threshold = cv2.threshold(img, 127, 255, 0)
contours, hierarchy = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 将轮廓绘制在原图上,并对图像取反
for contour in contours:
cv2.drawContours(img, [contour], 0, (255, 255, 255), thickness=-1)
img = cv2.bitwise_not(img)
# 显示结果
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文