写一个识别数字的opencv代码
时间: 2024-04-10 19:27:56 浏览: 11
当然,以下是一个使用OpenCV实现数字识别的示例代码:
```python
import cv2
import numpy as np
# 加载训练好的数字识别模型
model = cv2.ml.KNearest_create()
model.load('digits_model.xml')
# 预处理图像
def preprocess_image(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)
_, thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
return thresh
# 提取数字区域
def extract_digits(img):
contours, _ = cv2.findContours(img.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
rects = [cv2.boundingRect(c) for c in contours]
rects = [rect for rect in rects if rect[2] >= 5 and rect[3] >= 25]
rects.sort(key=lambda x: x[0])
return rects
# 数字识别
def recognize_digits(img, rects):
for rect in rects:
x, y, w, h = rect
roi = img[y:y+h, x:x+w]
roi = cv2.resize(roi, (20, 20))
roi = np.reshape(roi, (1, 400))
roi = np.float32(roi)
_, result, _, _ = model.findNearest(roi, k=1)
digit = int(result[0][0])
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.putText(img, str(digit), (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
# 加载图像
image = cv2.imread('digits.png')
# 图像预处理
processed_image = preprocess_image(image)
# 提取数字区域
digit_rects = extract_digits(processed_image)
# 数字识别
recognize_digits(image, digit_rects)
# 显示结果
cv2.imshow('Digits Recognition', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
请注意,此代码假设已经有一个经过训练的数字识别模型文件`digits_model.xml`。你可以使用适合你的数据集训练模型,然后将其加载到代码中进行数字识别。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)