《不同功能部分封装成对应函数.docx》由会员分享,可在线阅读,更多相关《不同功能部分封装成对应函数.docx(4页珍藏版)》请在优知文库上搜索。
1、由于多部分组合冗长且变量较多,不易区分,在此将不同功能部分封装成对应函数,由主程序调用即可。各部分函数文件如下:1. trasf函数:输入图像,返回透视变换后图像。deftrasf(imgr):importcv2importnumpyasnpimg=cv2.cVtColor(imgr,cv2.C0L0R_BGR2GRAY)th=cv2.adaptiveThreshold(imgj255,cv2.ADAPTIlines=cv2.HoughLinesP(th,1,np.pi360j200,miide=lines:,0,1.argsort()sortl=linesidex,:mmean=sortl:
2、,0,1.mean()mincount=0maxcount=0minid=12. OCr函数:输入图像,返回数字识别结果。defocr(image):importpytesseractimportcv2importredst=cv2.fastNlMeansDenoisingColored(image,Nongray=cv2.cvtColor(dst,cv2.C0L0R_BGR2GRAY)th=cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVEresult=pytesseract.image_to_string(th)maxmin=re.findall(rw-
3、Pd+.result)returnmaxmin3. CIraW函数:输入绘图位置,x,y坐标,对数据进行绘图defdraw(i,y):importmatplotlib.pyplotaspitpit.subplot(3,l,i)plt.plot(,y)plt.xlabel(Times);ifi=1:plt.ylabel(PressurecmH20);ifi=2:plt.ylabel(VoLumeL,);ifi=3:plt.ylabel(,FLomL/s);主函数:1 .图像导入2 .调用trasf函数,执行透视变换。3 .灰度、二值化。4 .调整二值化参数,通过连续区域面积计算去除小区域与极大区
4、域。调整参数,保留数值部分。th=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,3333,3)#ret,th=cv2.threshold(img,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH-OTSU)contours,hierarch=cv2.findContours(th,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)foriinrange(Ien(contours):area=cv2.ContourArea(contou
5、rsi)ifarea8000:cv2.drawContours(th,contoursi,-1,(0,0,0),thickness=-l)*由于直接二值化(OTSU全局或自适应),在参数默认时效果并不理想。在此,考虑自适应二值化中。倒数第二个参数为,自适应选取范围区域。区域小,则表明该点和最邻近的点对比区分,易提取出图像细节,但对于该实例图像来说,由于各处明暗不均,反而会使图像二值化后难以进行数据提取处理。特别是坐标轴的信息,也被清晰的展现出来,难以进行后续的处理。(WoSasE TLAkAwQSQMESb双丽33】WWgy故考虑大幅增大该参数,即每点与周边大范围综合比对,此时,图像中亮度一般
6、的区域(坐标轴、左侧数字区域)将会被滤除,图像将会仅保留最亮的数值 区域,省去了对坐标轴的特殊处理:5 .获取白色点(255)对应矩阵位置。为x,y坐标。*注意,由于图像显示与储存中,矩阵索引是以左上角为原点,从上向下,从左到右,且矩阵SiZe中第一个数表示行数,第二个数表示列数。即与通常认知中的(,y)坐标表示y值颠倒,且矩阵索引位置为(y,)o在此取矩阵的转置后提取坐标,再对y值进行颠倒。x,y=np.where(th.T=255);|y_ffl=1000-iforiiny_ffly_ff2=1000-iforiiny_ff2y_ff3=1000-iforiiny_ff36 .调用。Cr函
7、数获取图像中数字信息。与上周不同,引入带符号的浮点数提取格式:正则表达式:maxmin=re.findall(r,-Pd+.Pd*,result)-表示寻找J减号,?表示最多出现一次,或者不出现。d+表示连续或单个数字。.表示小数点?表示最多出现一次,或者不出现。d*表示0个或多个数字。即,仅有满足上述四则条件的数才会被记录并保留下来。满足了一般带符号小数的表示方法,同时兼容不带符合小数、整数的表示。同时,返回字段为字符串类型In7:maxmini,30.9998,8.1578调用时需要进行格式转换。7 .获取坐标值,并通过OCr读取的最大最小值进行数据整定,方法同上周。8 .对最终结果绘图1-Q三L图302010OZHIUUajnssO246810121416Times302010s1MO工