写一段python代码需要实现功能:检测出图像中的红色矩形并裁剪该区域
这里提供一种基于OpenCV库的实现方式:
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换颜色空间为HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义红色区域的范围
lower_red = (0, 50, 50)
upper_red = (10, 255, 255)
mask1 = cv2.inRange(hsv, lower_red, upper_red)
lower_red = (170, 50, 50)
upper_red = (180, 255, 255)
mask2 = cv2.inRange(hsv, lower_red, upper_red)
# 将两个mask相加
mask = cv2.add(mask1, mask2)
# 查找轮廓
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓
for contour in contours:
# 计算轮廓的面积
area = cv2.contourArea(contour)
if area > 1000:
# 获取轮廓的外接矩形
x, y, w, h = cv2.boundingRect(contour)
# 裁剪图像
crop_img = img[y:y+h, x:x+w]
# 显示裁剪后的图像
cv2.imshow('crop_img', crop_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
该代码通过将图像转换为HSV颜色空间,利用颜色范围提取出红色区域的mask,再通过findContours函数查找轮廓,计算轮廓面积,筛选出面积大于1000的矩形区域,获取该矩形的外接矩形,最后裁剪图像并显示裁剪后的结果
原文地址: https://www.cveoy.top/t/topic/dHk1 著作权归作者所有。请勿转载和采集!