OpenCV识别黑色矩形并输出坐标 - Python代码示例
使用OpenCV识别图像中的黑色矩形并输出其坐标,可以通过以下步骤实现:
- 导入必要的库
import cv2
import numpy as np
- 读取图像并进行预处理
假设图像名为'image.jpg',可以使用以下代码读取图像并将其转换为灰度图像:
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
- 阈值化处理
将灰度图像转换为二值图像,以便更方便地识别轮廓。可以使用cv2.threshold()函数,并根据实际情况调整阈值:
_, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
- 查找轮廓并筛选矩形
使用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))
- 输出矩形坐标
最后,遍历筛选出的矩形,并输出其坐标、宽度和高度:
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绘制矩形框,以便在图像上可视化识别结果。
原文地址: https://www.cveoy.top/t/topic/fxxl 著作权归作者所有。请勿转载和采集!