Python OpenCV 图像识别:检测红色矩形并裁剪
Python OpenCV 图像识别:检测红色矩形并裁剪
本文介绍使用 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()
代码解释:
- 读取图像:使用
cv2.imread()函数读取图像文件。 - 转换颜色空间:将图像从 BGR 颜色空间转换为 HSV 颜色空间,以便更方便地识别红色区域。
- 定义红色区域范围:设置红色区域的 HSV 色彩范围,使用
cv2.inRange()函数提取出红色区域的 mask。 - 查找轮廓:使用
cv2.findContours()函数查找 mask 中的轮廓。 - 遍历轮廓:循环遍历每个轮廓,计算其面积。
- 筛选矩形:筛选出面积大于 1000 的轮廓,即识别出的红色矩形。
- 获取外接矩形:使用
cv2.boundingRect()函数获取轮廓的外接矩形坐标和尺寸。 - 裁剪图像:根据外接矩形坐标和尺寸,使用切片操作从原图中裁剪出红色矩形区域。
- 显示结果:使用
cv2.imshow()函数显示裁剪后的图像。
总结:
通过使用 OpenCV 库,我们可以轻松地实现图像识别任务,例如检测红色矩形并裁剪该区域内容。代码简洁易懂,可以方便地应用于各种图像处理场景。
原文地址: https://www.cveoy.top/t/topic/nKdm 著作权归作者所有。请勿转载和采集!