首页 > 编程知识 正文

树莓派作为上位机,上位机串口接收数据并显示

时间:2023-05-05 10:15:00 阅读:8986 作者:4279

数字式仪表识别python草莓馅饼3B,识别结果返回上位机。 系统介绍整个硬件选型系统的组成。 实物2、算法设计图像预处理倾斜校正字符定位分割SVM数字识别3、识别效果

一、系统介绍

这是我系新建的项目,来源于热门成熟的车牌识别。 数字仪表识别与之相似。 另外,省略了识别汉字和字母的部分,提高了系统识别的正确性。 但是,在定位时,由于不能利用颜色信息,所以定位的实现需要稍微改变。

GitHub :

接送门

硬件选型综合考虑了系统需求,控制器采用草莓馅饼3B型

草莓派性能强,运行稳定,外形小,有丰富的接口引脚,带有Wi-Fi、摄像头等模块。

相机选择草莓派官方相机,像素为500万。

整个系统的结构

实物

二、算法设计本系统采用python语言编程,利用opencv开源代码库,代码简单,参数易于调整

读取图像预处理源图像:

img=cv2.imread('1.jpg ) )。

高斯滤波:

blur=3img=cv2.Gaussianblur(img,(blur,blur ),0 ) ) ) ) ) ) )。

灰度:

img=cv2.cvtcolor(img,cv2.COLOR_BGR2GRAY ) )。

Otsu阈值化:

ret,img_thresh=cv2.threshold(img,0,255,cv2.thresh _ binary cv2. thresh _ Otsu ) () ) ) )

在仪器图像的实际拍摄中,由于人手中的不稳定,使得拍摄的图像容易产生倾斜,如果倾斜角度过大,将严重影响文字的定位分割的效果,对之后的识别产生不良影响,因此在倾斜大的情况下需要对图像进行旋转校正虽然使用Hough直线检测进行校正,但是由于Hough变换运算量过大,所以首先进行Canny边缘检测

Canny提取边缘:

(Edges=cv2.canny(img_Thresh,50,150,apertureSize=7) ) ) ) ) 652 )

Hough检测旋转转换:

defHough_change(Edges ) : #mydyj转换lines=cv2.Houghlines ) Edges,1,NP.pi/180,0 ) for rho, theta inlines [0] : a=NP.cos (theta ) b=NP.sin ) theta ) x0=a*rhoy0=b*rhox1=int ) x01000*(-b ) y1 (a ) ) ifx1==x2ory1==y 2: rotate _ img=img else 3360 t=float (y2-y1 )x2-y1 ) ) ) ) if rotate _ ane

文字对位分割进行关闭修正后的图的运算。

matrix=NP.ones ((5,3 ),np.uint8) #img_edge1=cv2.morphologyex ) img_thresh2,cv2.MORPH_CLOSE,NP

然后,利用轮廓检测,检测矩形,根据矩形的面积和纵横比初步决定表盘的位置。 需要注意的是,在这个过程中小数部分被去除,成功检测小数部分的方法还没有被考虑。

粗分割后,用投影法进行细分割,标准化:

SVM数字识别本设计采用支持向量机(SVM )进行数字识别

SVM是分类器,其原理是找到集合超平面分离数据,使两种数据的几何间隔最大。

对于不可线性分离的数据集,进行非线性变换,投影到高维空间后进行分割。 这个过程由核函数进行。

整体识别流程:

识别结果:

三、识别效果使用python自带的tkinter可视化结构实现用户界面的构建和显示,由于时间关系和设计需求,没有设计远程中心界面。

用户界面和远程中心使用套接字进行通信。

完整代码:

完整的代码下载

不管有什么问题都请联系我。 可以是消息、邮件或303239883@qq.com

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。