python用opencv库模板匹配测量尺寸程序
时间: 2023-09-11 09:11:09 浏览: 107
下面是一个简单的 Python/OpenCV 程序,用于从图像中测量尺寸。
```python
import cv2
# 读取原始图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 读取模板图像
template = cv2.imread('template.jpg', 0)
# 获取模板图像的宽度和高度
w, h = template.shape[::-1]
# 进行模板匹配
res = cv2.matchTemplate(gray, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where(res >= threshold)
# 绘制矩形框
for pt in zip(*loc[::-1]):
cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
# 显示结果图像
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 计算测量尺寸
pixels_per_metric = float(input('输入每个像素的实际尺寸:'))
distance_pixels = loc[1][1] - loc[0][1]
distance_metric = distance_pixels / pixels_per_metric
print('测量尺寸:{}像素,{}实际尺寸'.format(distance_pixels, distance_metric))
```
这个程序首先从文件中读取原始图像和模板图像,并将原始图像转换为灰度图像。然后,它使用 OpenCV 的 `matchTemplate` 函数进行模板匹配。匹配结果存储在 `res` 中,它是一个浮点数数组。然后,程序使用 `np.where` 函数查找匹配结果大于或等于阈值的像素位置。这些像素位置被用于绘制矩形框,以突出显示匹配的区域。最后,程序计算测量尺寸,并将结果显示在屏幕上。
请注意,这个程序假设每个像素的实际尺寸已知,并且用户必须手动输入该值。如果您想自动计算每个像素的实际尺寸,则需要使用摄像机标定技术。
阅读全文