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()

说明:

  1. 使用 OpenCV 库读取图片。
  2. 将图片转换为 HSV 颜色空间。
  3. 定义红色的颜色范围,并使用 cv2.inRange() 函数获得红色掩膜。
  4. 使用 cv2.findContours() 函数获得红色轮廓。
  5. 遍历轮廓,对每个轮廓进行如下操作:
    • 使用 cv2.boundingRect() 函数获得轮廓的边界矩形。
    • 在边界矩形内部使用 cv2.inRange() 函数获得绿色掩膜。
    • 将轮廓内部的绿色像素替换为灰色。
  6. 显示处理后的图片
python代码:对图片中红色轮廓进行定位并将轮廓内部的绿色像素替换为灰色

原文地址: https://www.cveoy.top/t/topic/fflz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录