用opencv写一个可识别数字123并输出123的程序
时间: 2024-02-29 16:51:14 浏览: 28
好的,以下是使用 OpenCV 的 Python 代码实现:
```python
import cv2
# 读取图片
img = cv2.imread('image.jpg')
# 将图片转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 对图像进行二值化处理
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
# 遍历所有轮廓
for cnt in contours:
# 计算轮廓的面积
area = cv2.contourArea(cnt)
# 如果面积小于1000,则认为不是数字
if area < 1000:
continue
# 使用矩形包围轮廓
x,y,w,h = cv2.boundingRect(cnt)
# 将数字部分截取出来
digit = gray[y:y+h,x:x+w]
# 将数字部分缩放为固定大小
digit = cv2.resize(digit, (30, 30))
# 将数字部分转为二值图像
ret, digit = cv2.threshold(digit, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
# 输出数字
print(cv2.matchTemplate(digit, cv2.imread('1.png', 0), cv2.TM_CCOEFF_NORMED))
print(cv2.matchTemplate(digit, cv2.imread('2.png', 0), cv2.TM_CCOEFF_NORMED))
print(cv2.matchTemplate(digit, cv2.imread('3.png', 0), cv2.TM_CCOEFF_NORMED))
```
上述代码中,我们先读取一张包含数字 1、2、3 的图片,然后将其转为灰度图像,并进行二值化处理。接下来,我们使用 `findContours()` 函数查找图像中的轮廓,并遍历所有轮廓。对于每个轮廓,我们计算其面积,如果面积小于 1000,则认为不是数字;否则,我们使用 `boundingRect()` 函数将数字部分截取出来,并将其缩放为固定大小(30x30 像素)。接着,我们将数字部分转为二值图像,并分别与数字 1、2、3 的模板进行匹配,输出匹配结果。
需要注意的是,上述代码中的数字模板图片需要事先准备好,可以手动制作或者使用数字识别数据集中的样本。此外,代码中的数字匹配部分可以根据实际需求进行修改。
相关推荐
![](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)
![](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)