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

代码解释:

  1. 读取图像:使用 cv2.imread() 函数读取图像文件。
  2. 转换颜色空间:将图像从 BGR 颜色空间转换为 HSV 颜色空间,以便更方便地识别红色区域。
  3. 定义红色区域范围:设置红色区域的 HSV 色彩范围,使用 cv2.inRange() 函数提取出红色区域的 mask。
  4. 查找轮廓:使用 cv2.findContours() 函数查找 mask 中的轮廓。
  5. 遍历轮廓:循环遍历每个轮廓,计算其面积。
  6. 筛选矩形:筛选出面积大于 1000 的轮廓,即识别出的红色矩形。
  7. 获取外接矩形:使用 cv2.boundingRect() 函数获取轮廓的外接矩形坐标和尺寸。
  8. 裁剪图像:根据外接矩形坐标和尺寸,使用切片操作从原图中裁剪出红色矩形区域。
  9. 显示结果:使用 cv2.imshow() 函数显示裁剪后的图像。

总结:

通过使用 OpenCV 库,我们可以轻松地实现图像识别任务,例如检测红色矩形并裁剪该区域内容。代码简洁易懂,可以方便地应用于各种图像处理场景。

Python OpenCV 图像识别:检测红色矩形并裁剪

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

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