写一个用opencv检测烟盒,并判断横竖的代码
时间: 2024-05-29 11:03:52 浏览: 100
用OpenCV写一个简单的尺寸检测程序示例源码
以下是使用OpenCV检测烟盒并判断横竖的代码:
```python
import cv2
# 读取图片
img = cv2.imread('smoke_box.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 烟盒模板
template = cv2.imread('smoke_box_template.jpg', 0)
# 模板匹配
res = cv2.matchTemplate(gray, template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = max_loc
# 烟盒四个顶点
w, h = template.shape[::-1]
bottom_right = (top_left[0] + w, top_left[1] + h)
top_right = (top_left[0] + w, top_left[1])
bottom_left = (top_left[0], top_left[1] + h)
# 绘制矩形框
cv2.rectangle(img, top_left, bottom_right, (0, 255, 0), 2)
# 判断烟盒横竖
if abs(top_right[1] - top_left[1]) > abs(bottom_left[0] - top_left[0]):
print('烟盒横放')
else:
print('烟盒竖放')
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这里使用了模板匹配的方法来检测烟盒,首先读取图片并将其转换为灰度图像,然后读取烟盒的模板图像进行匹配。匹配后可以得到烟盒在原始图像中的位置,进而得到烟盒的四个顶点的坐标。根据这四个顶点的坐标,可以判断烟盒的横竖方向。最后,使用OpenCV的rectangle函数在原始图像上绘制矩形框,以便于观察。
阅读全文