-
安装python,pycharm,自行安装。
-
Python下安装OpenCv
2.1 打开cmd,先安装opencv-python
pip install opencv-python --user -i https://pypi.tuna.tsinghua.edu.cn/simple
2.2 再安装opencv-contrib-python
pip install opencv-contrib-python --user -i https://pypi.tuna.tsinghua.edu.cn/simple
3.Pycharm安装opencv-python
打开pycharm,然后打开setting,打开python解析器
点击Go to tool window。下面红框处管理和下载python依赖包
点击下图的设置,然后点击管理仓库
新增python包仓库: https://pypi.tuna.tsinghua.edu.cn/simple/
在这里搜索并下载opencv-python,numpy
下载完成,新建py文件,执行代码。有窗口输出该路径的图片就说明成功了。
import cv2 as cv
# 这段代码是测试opencv是否正常安装。运行下面这段代码出现图片就是成功的
src = cv.imread("C:\\Users\Administrator\Desktop\\city1.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
cv.waitKey(0)
cv.destroyAllWindows()
print("hi python")
-
下载Tesseract OCR,去官网 https://github.com/UB-Mannheim/tesseract/wiki
下载exe。安装完成后,需要设置Tesseract-OCR的系统环境。详细看这篇文章
https://blog.youkuaiyun.com/qq_38463737/article/details/109679007 -
下载Tesseract OCR的语言包,中文语言包和英文语言包。
去官网 https://github.com/tesseract-ocr/tessdata 下载eng.traineddata和chi_sim.traineddata
然后把那两个文件放到**/Tesseract-OCR/tessdata
-
pycharm 的python包 安装pytesseract
-
在项目文件.venv/Lib/site-packages/pytesseract/pytesseract.py 文件中修改变量tesseract_cmd,路径自行修改。 这是为了解决BUG:”tesseract is not installed or it‘s not in your PATH“
-
安装gTTS 谷歌语音播报,pillow,pyttsx3 离线语音播报。
-
在手机上下载“IP 摄像头”,并安装。这里我在应用宝里下载了 IP 摄像头。使用该软件,要电脑连接手机热点,同处在局域网内。
10,全部py代码如下
# 本代码参考了https://blog.youkuaiyun.com/weixin_35752233/article/details/142606296 , https://blog.youkuaiyun.com/m0_58892312/article/details/120923578 和 AI
# 人脸模型库文件“ haarcascade_frontalface_default.xml ”,帮助摄像头获取的画面去对比
# 1. 第二句代码中的admin为我的IP摄像头用户名, admin为我的IP摄像头密码,这个可以在手机APP的设置里查看和修改,代码中的要使用自己的用户名、密码。
# 2. @后面的地址是局域网IP地址,这个在打开IP摄像头服务器之后的界面就能看到,也需要修改为自己的地址。
# 3.代码的其他部分无需修改。
import time
import cv2 as cv
import pytesseract
import numpy as np
import pyttsx3
from gtts import gTTS
# 图像的裁剪和缩放是图像预处理的两个基本操作。裁剪主要是根据需要对图像的特定区域进行选取,剔除无效或干扰信息。缩放则是为了满足特定的分辨率或图像尺寸需求,对图像的大小进行调整。
# 裁剪图片
def crop_image(image, x, y, width, height):
return image[y:y + height, x:x + width]
# 缩放图片
def resize_image(image, width, height):
return cv.resize(image, (width, height))
# 灰度化. 图像的灰度化和二值化是将图像从彩色转换到灰度图像和黑白图像的过程,这些转换对于提高OCR的准确性和效率至关重要。
def to_grayscale(image):
return cv.cvtColor(image, cv.COLOR_BGR2GRAY)
# 二值化.
def to_binary(image, threshold=127, maxval=255):
return cv.threshold(image, threshold, maxval, cv.THRESH_BINARY)[1]
# 噪声去除是图像预处理中非常重要的一步。它通常通过滤波技术实现,可以减少图像中的随机噪声,提高图像质量,有助于后续的文字检测和识别。
def remove_noise(image, kernel_size=3