《机器视觉系统应用》课件-名片检测程序运行演示_第1页
《机器视觉系统应用》课件-名片检测程序运行演示_第2页
《机器视觉系统应用》课件-名片检测程序运行演示_第3页
《机器视觉系统应用》课件-名片检测程序运行演示_第4页
《机器视觉系统应用》课件-名片检测程序运行演示_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

名片检测程序运行演示课程引入代码分析代码演示一二三目录能力目标提取名片区域,将图片中名片的部分截取出来知识目标(1)图像二值化;(2)边缘提取;(3)求外接矩形。(4)图片旋转课程目标一课程引入名片是标示姓名及其所属组织、公司单位和联系方法的纸片,名片是新朋友互相认识、自我介绍的最快有效的方法。名片上存在着大量有用信息,但是常常由于名片数量多了或者存放久远,难以查找的到想要获取的名片,因此本案例设计了一个名片检测的方法,为名片查找提供基础。二代码分析

在Opencv中可直接使用函数cv2.cvColor()将彩色图像转为其它类型的图像。其语法格式为:dst=cv2.cvtColor(src,code[,dstCn])式中:dst表示输出图像,与原始输入图像具有同样的数据类型和深度。Src表示原始输入图像。可以是8位无符号图像、16位无符号图像,或者单精度浮点数等。Code是色彩空间转换码,常用的有:cv2.COLOR_BGR2GRAY#彩色图像转换为灰度图cv2.COLOR_GRAY2BGR#灰度图像转换为彩色图cv2.COLOR_BGR2RGB#BGR彩色图像转换为RGB彩色图dstCn是目标图像的通道数。如果参数为默认的0,则通道数自动通过原始输入图像和code得到。图像灰度化二代码分析

在Opencv中可使用cv2.threshold()函数进行阈值化处理,该函数的语法格式为:Retval,dst=cv2.threshold(src,thresh,maxval,type)式中:retval代表返回的阈值。dst代表阈值分割结果图像,与原始图像具有相同的大小和类型。src代表要进行阈值分割的图像,可以是多通道的,8位或32位浮点型数值。thresh代表要设定的阈值。maxval代表当type参数为THRESH_BINARY或者THRESH_BINARY_INV类型时,需要设定的最大值。type代表阈值分割的类型,具体类型值如表所示。图像二值化

二代码分析一个轮廓对应着一系列的点,这些点以某种方式表示图像中的一条曲线。在Opencv中,函数cv2.findContours()用于查找图像的轮廓,并能够根据参数返回特定表示方式的轮廓(曲线)。函数cv2.drawContours()能够将查找到的轮廓绘制到图像上,该函数可以根据参数在图像上绘制不同样式(实心/空心点,以及线条的不同粗细、颜色等)的轮廓,可以绘制全部轮廓也可以仅绘制制定的轮廓。函数cv2.findContours()的语法格式为:image,contours,hierarchy=cv2.findContours(image,mode,method)式中的返回值为:image:与函数参数中的原始图像image一致。contours:返回的轮廓。hierarchy:图像的拓扑信息(轮廓层次)。式中的参数为:image:原始图像。8位单通道图像,所以非零值被处理为1,所有零值保持不变。也就是说灰度图像会被自动处理为二值图像。在实际操作时,可以根据需要,预先使用阈值处理等函数将待查找轮廓的图像处理为二值图像。mode:轮廓检索模式。method:轮廓的近似方法。轮廓提取

二代码分析函数cv2.drawContours()的语法格式是:image=cv2.drawCountours(image,contours,contourIdx,color[,thickness[,lineType[,hierarchy[,maxLevel[,offset]]]]])其中,函数的返回值为image,表示目标图像,即绘制了边缘的原始图像。式中:image:待绘制轮廓的图像。contours:需要绘制的轮廓。contourIdx:需要绘制的边缘索引,告诉函数cv2.drawContours()要绘制某一条轮廓还是全部轮廓。color:绘制的颜色,用BGR格式表示。thickness:可选参数,表示绘制轮廓时所用画笔的粗细。lineType:可选参数,表示绘制轮廓时所用的线型。hierarchy:对应函数cv2.drawContours()所输出的层次信息。maxLevel:控制所绘制的轮廓层次的深度。Offset:偏移参数。该参数使轮廓偏移到不同的位置展现出来。轮廓提取

二代码分析摆正图片

在使用函数cv2.warpAffine()对图像进行旋转时,可以通过函数cv2.getRotationMatrix2D()获取转换矩阵。该函数的语法格式为:retval=cv2.getRotationMatrix2D(center,angle,scale)式中:center为旋转的中心点。angle为旋转角度,正数表示逆时针旋转,负数表示顺时针旋转。scale为变换尺度(缩放大小)二代码分析绘制矩形边框

Opencv提供了函数cv2.rectangle()用来绘制矩形。该函数的语法格式为:img=cv2.rectangle(img,pt1,pt2,color[,thickness[,lineType]])式中:img:在其上面绘制图像的载体图像。color:绘制形状的颜色。thickness:线条的粗细。默认值是1,如果设置为-1,表示填充图形。lineType:线条的类型,默认是8连接类型。pt1:矩形顶点pt2:矩形中与pt1对角的顶点二代码分析裁剪图片

利用数组切片的方式获取需要裁剪的图片范围。这里需要注意的是切片给出的坐标为需要裁剪的图片在原图片上的坐标,顺序为[y0:y1,x0:x1],其中原图的左上角是坐标原点。执行img=img[y0:y1,x0:x1],即:切割y0y1、y0x0、x0x1、y1x1所组成的矩形。img=common.import_img(path)new_img=common.import_img(path)gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转成灰度图_,binary=cv2.threshold(gray,64,255,cv2.THRESH_BINARY)#二值化灰度图二值图图像二值化三代码演示#找边沿

contours,_=cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)#画出边沿

cv2.drawContours(new_img,contours,-1,(0,0,255),3)二值图轮廓提取图轮廓提取三代码演示#矩形,旋转rect=cv2.minAreaRect(contours[0])box=cv2.boxPoints(rect)box=0(box)cv2.drawContours(new_img,[box],0,(0,255,255),2)d_c1=box[0]-box[1]#计算夹角degree_a=np.arctan(d_c1[1]/d_c1[0])degree_a=degree_a*180/np.pi#摆正图像new_img=common.rotate(img,degree_a,1)img_1=new_img.copy()gray2=cv2.cvtColor(img_1,cv2.COLOR_BGR2GRAY)#转成灰度图_,binary2=cv2.threshold(gray2,64,255,cv2.THRESH_BINARY)#二值化contours2,_=cv2.findContours(binary2,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)#找边沿cv2.drawContours(new_img,contours2,-1,(0,0,255),3)#画出边沿摆正图像三代码演示#外接正矩形x,y,w,h=cv2.boundingRect(contours2[0])cv2.rectangle(new_img,(x,y),(x+w,y+h),(0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论