python车牌识别系统开源代码,语音识别python
4.算法4.1相机读取和ROI选择各模块设计原理:
创建一个MyCamera类,通过调用opencv的VideoCapture类获取摄像头,通过VideoCapture类的read方法读取摄像头的帧,通过python的数组切片操作截取ROI。
类MyCamera: def __init__(self,cameraNum): self.cap=cv。video capture(cameraNum)self . height=360 self . weight=640 def read(self):iret,frame=self . cap . read()src=frame[60:420,] if (iret!=True):引发异常( camera fail )返回src def release(self):self . cap . release()cv . destroyallwindows()ROI区截取代码段
raw _ img=self . read()ROI=raw _ img[160:200,190:560]
4.2线轮廓检测模块
4.2.1图像预处理-dydbm滤波原理:
由于使用了聊天摄像头,在捕捉实时视频帧时不可避免的会有dydbm噪声,所以采用dydbm滤波来模糊ROI。
Dydbm模糊本质上是一种均值模糊,只不过dydbm模糊是加权平均。距离越近,重量越大,距离越远,重量越小。一般来说,dydbm滤波就是对整幅图像进行加权平均的过程。每个像素的值是通过对其自身和邻域中的其他像素值进行加权平均而获得的。从它的函数表达式我们可以知道:
代码段:
pre=cv。高斯布朗(image,(5,5),0)处理结果:
4.2.2灰度原理:
彩色图像包含了大量的颜色信息,不仅在存储上耗费了大量的资源,而且在处理上降低了系统的执行速度。因此,通常将彩色图像转换成灰度图像以加快处理速度。将颜色转换为灰度的过程称为灰度处理。选择标准是经过灰度变换后,像素的动态范围增大,图像的对比度扩大,图像更清晰、更细腻、更容易识别。
调用solid cv2库中的cvtColor方法,将原来的RGB色域灰化。
代码段:
gray=cv.cvtColor(pre,cv。COLOR_BGR2GRAY)处理结果:
4.2.3图像二值化原理:
二值图像是指整幅图像中只有黑白二值的图像。在实际的图像处理系统中,图像二值化的关键是确定合适的阈值,使线条轮廓从背景中分离出来。二值变换的结果图像必须具有良好的形状保持性,不丢失有用的形状信息,不产生额外的空缺等等。这种系统要求处理速度快、成本低、信息量大。利用二值图像进行处理可以大大提高处理效率。阈值处理的操作过程是一个阈值由用户指定或由算法生成。如果图像中像素的灰度值小于阈值,则将该像素的灰度值设置为0或255,否则,将该像素的灰度值设置为255或0。
调用实体cv2库中的阈值方法进行二值化。
代码段
ret,binary_img=cv.threshold(gray,50,255,cv。THRESH_BINARY cv。THRESH_TRIANGLE)处理结果
4.2.4图像中值滤波原理:
由于二值化图像中存在椒盐噪声,所以采用中值滤波对其进行处理。
代码段:
meb=cv.medianBlur(binary_img,3)处理结果
4.2.5外形检查原理:
通过调用cv2库中的findContours方法检测二值化ROI图像中的线条轮廓,输入图像为二值图像。用RETR _外部法识别外轮廓,并放回所有轮廓的坐标原点和偏移量。因为背景中的噪声可能会被识别为轮廓,为了避免这种影响,通过判断轮廓的面积选择了8条线轮廓。最后,在原始ROI帧中选择它。
代码段:
轮廓,层次=cv.findContours(meb,cv .RETR _外部,简历.CHAIN _ APPROX _ SIMPLE)if len(contours)0:box=[cv。轮廓中c的边界矩形]框中框的计数=0。copy():x,y,w,h=box if w * h 100:box。移除(方框)继续#打印(宽*高)图像=cv。rectangle(image,(x,y),(x w,y),(0,255,0),2) count=count 1处理结果
定位三边怎么加边框半铸钢钢性铸铁(铸造半钢)中差异滚动条样式如何设置
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。