左上坐标(x1,y1),右下坐标(x2,y2).如何用opencv找到图片中所有的轮廓并根据给定的左上和右下坐标进行轮廓匹配找到正好符合要求的轮廓
时间: 2024-03-25 21:37:07 浏览: 202
可以首先使用cv2.findContours函数找到图片中的所有轮廓,然后对每个轮廓进行一次判断,判断该轮廓是否在给定的左上和右下坐标范围内。如果在范围内,则说明该轮廓符合要求,可以进行相关操作。
代码如下:
```python
import cv2
# 读取图片
img = cv2.imread('image.jpg')
# 灰度化处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 给定的左上和右下坐标
x1, y1, x2, y2 = 100, 100, 300, 300
# 遍历所有轮廓
for contour in contours:
# 获取当前轮廓的边界框
x, y, w, h = cv2.boundingRect(contour)
# 判断该轮廓是否在给定的左上和右下坐标范围内
if x >= x1 and y >= y1 and x + w <= x2 and y + h <= y2:
# 在范围内,进行相关操作
cv2.drawContours(img, [contour], -1, (0, 0, 255), 2)
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 显示图片
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,cv2.drawContours函数可以用来绘制轮廓,cv2.rectangle函数可以用来绘制矩形框。
阅读全文