python代码:对图片中红色轮廓进行定位并将轮廓内部的绿色像素替换为灰色
import cv2
import numpy as np
# 读取图片
img = cv2.imread('image.jpg')
# 转换颜色空间为HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 红色范围
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
lower_red2 = np.array([160, 100, 100])
upper_red2 = np.array([179, 255, 255])
# 获得红色掩膜
mask_red1 = cv2.inRange(hsv, lower_red, upper_red)
mask_red2 = cv2.inRange(hsv, lower_red2, upper_red2)
mask_red = cv2.bitwise_or(mask_red1, mask_red2)
# 获得红色轮廓
contours, hierarchy = cv2.findContours(mask_red, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓
for contour in contours:
# 获取轮廓的边界矩形
x, y, w, h = cv2.boundingRect(contour)
# 获得轮廓内部的绿色掩膜
mask_green = cv2.inRange(img[y:y+h, x:x+w], np.array([0, 100, 0]), np.array([100, 255, 100]))
# 将轮廓内部的绿色像素替换为灰色
img[y:y+h, x:x+w][mask_green > 0] = (128, 128, 128)
# 显示结果
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
说明:
- 使用 OpenCV 库读取图片。
- 将图片转换为 HSV 颜色空间。
- 定义红色的颜色范围,并使用
cv2.inRange()函数获得红色掩膜。 - 使用
cv2.findContours()函数获得红色轮廓。 - 遍历轮廓,对每个轮廓进行如下操作:
- 使用
cv2.boundingRect()函数获得轮廓的边界矩形。 - 在边界矩形内部使用
cv2.inRange()函数获得绿色掩膜。 - 将轮廓内部的绿色像素替换为灰色。
- 使用
- 显示处理后的图片
原文地址: https://www.cveoy.top/t/topic/fflz 著作权归作者所有。请勿转载和采集!