python opencv边缘检测,python与opencv轮廓识别

  python opencv边缘检测,python与opencv轮廓识别

  它是形状分析和物体检测与识别的有用工具。下面文章主要介绍如何使用Python OpenCV实现简单的图像边缘轮廓检测(零基)的相关信息。通过示例代码详细介绍,有需要的朋友可以参考一下。

  00-1010序函数基础和三方库CV。阈值(PIC,阈值,最大值,模型)CV。FindContours(待处理图片,模型(提取方法))cv.drawContours(画布,轮廓集,索引,颜色,粗细)cv.boundingRect(

  

目录

 

  基于Python3.7和OpenCV4.3的图像轮廓检测在机器视觉等方面都有着重要的作用。在本文中,我们将使用Python 3.7和OpenCV 4.3来检测静态图像的轮廓。以最终框的形式框住目标图像。

  

前言

 

  本文使用的第三方库是Opencv4.3

  导入第三方库

  将cv2作为cv导入

  因为Opencv显示图像比较麻烦,和matlab或者matplob不一致。考虑到基础薄弱,我可能不了解这个库的图像显示机制。在这里,我首先定义一个img_show函数来更方便地显示图像。

  def img_show(图片,名称):

  这个函数img_show()用来调用OpenCV的相关函数来显示图像。

  Name是显示图像窗口的名称(name是一个字符串)。

  Pic是显示的图像(pic是OpenCV IM读入的图像)

  简历imshow(图片,姓名)

  cv.waitkey(0)

  cv.destroyAllWindows()

  

函数基础与三方库

 

  该函数用于在单一通道中对不同阈值的图像进行操作,一般用于对图像进行二值化。二值化将有助于计算边缘检测的梯度。

  其中,pic是要处理的图片,所以pic因为是单通道处理,一般会转换成灰度图像。

  Thresh是操作阈值,高于这个阈值的会根据不同的型号统一为0或者maxvalue。

  模型是一种操作方法,一般只有cv。THRESH_BINARY_INV和cv。THRESH_BINARY是必需的。

  …THRESH_BINARY_INV将大于THRESH的值设置为0。

  …THRESH_BINARY将大于THRESH的值设置为255。

  这个图像有两个返回值,第一个是阈值,也就是阈值,第二个是二值图像的矩阵。

  

cv.threshold(pic,thresh,maxvalue,model)

 

  该功能用于提取pic的轮廓点。当pic是二值图像时,函数提取会更准确。

  一般cv。RETR _外部和简历。RETR树用于提取模型。

  … extnal被提取为外层轮廓。

  …Tree提取图像内层和外层的所有轮廓。

  方法是提取方法,包括cv。chain _ approximate _ none和cv。链_近似_简单。

  …无是以直线方式连接所选轮廓。

  …SIMPLE压缩线条和斜边,只标记轮廓的顶点。

  这个函数有两个返回值,一个是边缘点(列表形式),一个是层次信息。

  轮廓,层次=cv.findContours(pic,cv。RETR _外部,cv。CHAIN_APPROX_NONE)

  这个分段代码的意思是

  基于pic这张图片

  使用模式来描述外部轮廓。

  通过链接每个点来执行轮廓提取。

  得到最终的轮廓列表集轮廓和层次关系hie。

  rarchy

  注:在contours里面有非常多的轮廓集合,比如contours[0]contours[1]contours[2]是三个轮廓,可能只有1是目标轮廓,其他均为噪声轮廓

  

 

  

cv.drawContours(画布,轮廓集合,索引,颜色,粗细)

 

  此函数用于在指定画布,用指定颜色粗细的线画出指定轮廓(索引判断)或所有轮廓(-1)

  画布:将轮廓点画在画布上,一般是代替去图片的copy图,不然会污染原图。

  轮廓集合:上文中提到的contours,其中包含了目标轮廓和噪声轮廓的所有轮廓

  索引:选定轮廓集合中的某一轮廓,如果你知道目标轮廓的编号可以直接写,如果不知道就写-1,可以画出所有轮廓

  颜色: 元组形式,(255,0,0)为红色,以此类推

  粗细:轮廓的粗细 1~任意整数,太大会覆盖原图

  

 

  

cv.boundingRect(图像)

 

  此函数用于将检测的函数进行矩阵点的查找

  图像:被检测的图像,一般是传入目标的轮廓,即contours[index],index为目标编号

  此函数会返回四个值:x,y,w,h

  其中x,y指的是该图像x轴上最小值和y轴最小值(有左上角为原点时),w,h跟别指的囊括图像所有的宽和高

  

 

  

代码实现

 

  

#导入opencv

 

  

 

  

实现效果

 

  

 

  

 

  

总结

 

  到此这篇关于如何利用Python+OpenCV实现简易图像边缘轮廓检测的文章就介绍到这了,更多相关PythonOpenCV图像边缘轮廓检测内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: