opencv数字识别代码分享
时间: 2024-03-25 07:34:36 浏览: 51
opencv数字识别
当然,我可以为您介绍一下OpenCV数字识别的代码分享。
以下是一个简单的OpenCV数字识别代码示例:
```python
import cv2
import numpy as np
# 加载训练好的模型
model = cv2.ml.KNearest_create()
model.load('digits_model.xml')
# 读取测试图像
image = cv2.imread('test_image.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 对图像进行预处理
blur = cv2.GaussianBlur(gray, (5, 5), 0)
_, thresh = cv2.threshold(blur, 90, 255, cv2.THRESH_BINARY_INV)
# 查找轮廓
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 对每个轮廓进行识别
for contour in contours:
(x, y, w, h) = cv2.boundingRect(contour)
# 提取数字区域并调整大小
roi = thresh[y:y+h, x:x+w]
roi = cv2.resize(roi, (28, 28))
roi = np.reshape(roi, (1, 784)).astype(np.float32)
# 进行预测
_, result, _, _ = model.findNearest(roi, k=1)
digit = int(result[0][0])
# 在图像上绘制识别结果
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.putText(image, str(digit), (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0,255, 0), 2)
# 显示结果图像
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码使用了K最近邻算法进行数字识别。首先,加载训练好的模型,然后读取测试图像并进行预处理。接下来,通过查找轮廓找到数字区域,并对每个区域进行识别。最后,在图像上绘制识别结果并显示出来。
希望这个代码示例对您有所帮助!
阅读全文