使用OpenCV识别图像中的黑色矩形并输出其坐标,可以通过以下步骤实现:

  1. 导入必要的库
import cv2
import numpy as np
  1. 读取图像并进行预处理

假设图像名为'image.jpg',可以使用以下代码读取图像并将其转换为灰度图像:

image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  1. 阈值化处理

将灰度图像转换为二值图像,以便更方便地识别轮廓。可以使用cv2.threshold()函数,并根据实际情况调整阈值:

_, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
  1. 查找轮廓并筛选矩形

使用cv2.findContours()函数查找图像中的轮廓,并筛选出符合条件的矩形。这里假设黑色矩形的面积大于1000:

contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
rectangles = []
for contour in contours:
    area = cv2.contourArea(contour)
    if area > 1000:
        x, y, w, h = cv2.boundingRect(contour)
        rectangles.append((x, y, w, h))
  1. 输出矩形坐标

最后,遍历筛选出的矩形,并输出其坐标、宽度和高度:

for rect in rectangles:
    x, y, w, h = rect
    print(f'矩形坐标:({x}, {y}), 宽度:{w}, 高度:{h}')

完整的代码如下:

import cv2
import numpy as np

image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
rectangles = []
for contour in contours:
    area = cv2.contourArea(contour)
    if area > 1000:
        x, y, w, h = cv2.boundingRect(contour)
        rectangles.append((x, y, w, h))

for rect in rectangles:
    x, y, w, h = rect
    print(f'矩形坐标:({x}, {y}), 宽度:{w}, 高度:{h}')

请确保图像中的黑色矩形与背景有明显的对比度,以便能够准确地识别。

注意:

  • 代码示例中假设黑色矩形的面积大于1000,您需要根据实际情况进行调整。
  • 为了提高识别精度,您可以尝试使用不同的图像预处理方法,例如边缘检测或形态学操作。
  • 除了输出矩形坐标外,您还可以使用OpenCV绘制矩形框,以便在图像上可视化识别结果。
OpenCV识别黑色矩形并输出坐标 - Python代码示例

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

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