Python怎么调用opencv,opencv-python中文教程

  Python怎么调用opencv,opencv-python中文教程

  原文链接:opencv图像腐蚀和扩展的开运算和闭运算

  OpenCV -开闭操作-山上的风景-博客公园

  腐蚀:

  腐蚀会腐蚀前景物体的边缘。原理是卷积核沿着图像滑动。如果卷积对应的原图像像素值都为1,则中心元素保持原值,否则为0。

  效果是靠近前景的像素被腐蚀为0,前景物体变小,图像的白色区域减少,对消除白噪声有用,可以分离两个相连的物体。

  扩展:

  与腐蚀相反,如果其中一个卷积核的值为1,则中心元素的值为1。这种操作会增加前景中的白色区域,这种白色区域通常会在去除噪声时腐蚀,然后扩大。腐蚀过程缩小前景,膨胀操作用于将前景转换回来。膨胀也可以连接彼此分离的物体。

  1.)边缘检测

  元素可以使用矩形/椭圆形/十字形。Cv2.getStructuringElement))可以生成各种形状的结构元素,包括:

  kernel=cv2 . getstructuringelement(cv2 . morph _ rect,(5,5)) #矩形结构

  kernel=cv2 . getstructuringelement(cv2 . morph _ ellipse,(5,5)) #椭圆结构

  kernel=cv2 . getstructuringelement(cv2 . morph _ cross,(5,5)) #交叉结构

  img=cv2.imread(j.BMP ,0)))))))))))))))).

  kernel=NP.ones ((5,5),np.uint8)).

  腐蚀=cv2.erode(img,kernel) #腐蚀极限是重复操作的次数。

  与膨胀腐蚀相反,取局部最大值具有使图像“变胖”的效果:

  Dilation=cv2.dilate(img,kernel) # inflation #!/usr/ssdpd/env python

  #编码:utf-8

  导入cv2

  进口编号为NP

  image=cv2.imread(2.jpg ,0);

  制作33的结构元素

  element=cv2 . getstructuringelement(cv2 . morph _ rect,(3,3))

  dilate=cv2.dilate(image,element))。

  erode=cv2.erode(image,element))。

  #减去两幅图像以获得边缘。第一个参数是扩展图像,第二个参数是蚀刻图像。

  结果=cv2。ABSdiff(扩张,侵蚀);

  #上面得到的结果是灰度,为了更清晰的观察,已经进行了二值化处理。

  retval,result=cv2。阈值(结果,40,255,cv2。THRESH _ BINARY);

  # Invert,即根据2值图对每个像素进行反转。

  result=cv2 . bitwise _ not(result;

  #显示图像

  CV2.imshow(result ,结果);

  cv2 . wait key(0))))))))cv2 . wait key(0))))cv2 . wait key(0).

  cv2.destroyAllWindows(

  腐蚀和膨胀是数学形态学术语,它们在图像处理中的应用称为图像二值形态学。

  形态学主要是获取一个物体的拓扑结构信息,通过物体与结构元素相互作用的一些运算,可以获得物体更本质的形态。形态学应用于图像处理时,其主要作用是利用基本的形态学操作如腐蚀、膨胀操作来观察和处理图像,从而达到提高图像质量的目的。并且描述和定义图像的各种几何参数和特征。

  二值图像的腐蚀和膨胀操作如下。

  侵蚀)。

  蚀刻的具体操作:一个结构元素(也叫操作数矩阵)的大小一般是33。也可以看作卷积模板。这些区别在于卷积模板是基于算术运算的,而结构元素是基于集合运算的。扫描图像的每个像素(图像边缘的处理下面会详细分析),用操作数矩阵扫描图像的每个像素,使像素与操作数矩阵的每个像素重叠。

  另一方面,如果“扩张”操作反过来,都为0,则像素中的像素为0,否则为1。

  腐蚀的作用是消除物体的边界点,减少目标。这一点从操作过程中可以看得很清楚。物体边界上必须有像素值为0和1,腐蚀操作后与这个1相邻的像素都是0。因此,腐蚀操作消除了小的无意义的物体,并使边界向内收缩。

  相反,扩张的作用当然是放大目标,填充体内的微小孔洞,使物体的边界变得平滑,向外扩张。

  运气是先腐蚀再膨胀的过程),可以腐蚀图像上的小噪声,平滑物体边界。

  关闭操作是先膨胀后腐蚀)

  Rode)过程,它可以填充身体中的微小空洞,并平滑对象的边界。

  通常,由于噪声的影响,阈值化后的图像边界往往很不平滑。物体区域有一些噪声孔,背景区域有一些小的噪声物体散落。持续的开闭操作可以有效改善这种情况。有时需要多次腐蚀,同样的膨胀次数才能产生更好的效果。

  腐蚀会去除物体的边缘点,小物体的点都会被当作边缘点,所以会被完全删除。再次放大时,左边的大对象会变回原来的大小,而被删除的小对象会永远消失。

  扩展操作会使对象的边界向外扩展。如果物体中有小孔,这些孔将被膨胀操作填充,因此它们不再是边界。当再次进行蚀刻操作时,外部边界将变回原来的样子,这些内部空隙将永远消失。

  对上述腐蚀和膨胀操作进行更详细的分析(主要讲涉及图像边缘的腐蚀和膨胀操作)

  注意:当结构元素扫描图像中的每个像素时,结构元素的部分邻域将在图像之外。例如,当一个结构元素扫描图像上方第一行的像素值时(这里默认的结构元素是33),一些结构元素会在图像之外。此时,为了有效地处理边界像素,执行形态学运算的函数通常对超出图像的像素赋予一个数值,并且不指定数值,这类似于用附加的行和列填充图像的函数。对于扩展和蚀刻操作,它们的像素填充值是不同的。规则如下:

  和腐蚀膨胀填充图像规则表。

  规则

  超出腐蚀图像边界的像素值被定义为该数据类型允许的最大值。对于二值图像,这些像素值被设置为1;对于灰度图像,unit8类型的最小值也是255。

  超出膨胀图像边界的像素值定义为该数据类型允许的最小值,对于二值图像,这些像素值设置为0;对于灰度图像,unit8类型的最小值也是0。

  通过对膨胀操作使用最小填充,对腐蚀操作使用最大填充,可以有效地消除边界效应(输出图像的边界附近的区域与图像的其他部分不连续)。否则,如果蚀刻操作以最小值填充,则在蚀刻操作之后,输出图像将围绕黑边。(这里根据腐蚀和膨胀的具体操作过程应该不难理解,因为当图像边缘全白,也就是像素值全为1时。此时,如果图像边缘之外的像素值用最小值填充,则在二值图像的情况下,像素值为0。根据腐蚀操作,相位肯定是0,然后图像边缘会变黑。)

  结构:膨胀和腐蚀操作的最基本组件,用于测试输出图像,通常比要处理的图像小得多。二维结构元素由值为0或1的矩阵组成。结构元素的原点指定了图像中待处理像素的范围,结构元素中值为1的点决定了结构元素的相邻像素在膨胀或腐蚀时是否需要参与计算。或者非平面结构元素使用0,1定义X和Y平面上结构元素的范围,第三维Z定义高度。

  操作(膨胀前的腐蚀)

  特点:会在不影响原图def open_demo(image)的情况下,消除一些1的白噪声、噪声和小干扰块:

  gray=cv.cvtColor(图像,cv。COLOR_BGR2GRAY)

  对于范围内的I(1000):#给灰度图像添加一些噪点。

  h=np.random.random_integers(0,gray.shape[0]-1)

  w=np.random.random_integers(0,gray.shape[1]-1)

  val=NP . random . random _ integers(0,255)

  灰色[h,w]=camp(灰色[h,w],val)

  Ret,ssdpdary=cv。阈值(灰色,0,255,cv。thresh _ binary cv。thresh _ otsu) #生成二值图像

  cv . im show( SSD dary ,SSD dary)

  kernel=cv . getstructuringelement(cv。墨菲_RECT,(3,3))

  Ssdpdary=cv形态学ex(SSD dary,cv。形态学_ open,kernel) #先腐蚀后膨胀的开运算,会用1消除一些白噪声。

  三。打开操作完成的任务

  (1)提取水平垂直线def open_demo(图片):

  gray=cv.cvtC

  ret,SSD dary=cv。阈值(灰色,0,255,变异系数.THRESH_BINARY_INVcv .OTSU)

  简历。即时消息显示(“固态硬盘数据”,固态硬盘数据)

  内核=cv。getstructuringelement(cv .吗啉_RECT,(1.15))#修改内核为(15,1)可以提起横线

  SSD dary=cv。形态指数(SSD dary,cv .MORPH_OPEN,内核)

  cv.imshow(open_demo ,ssdpdary)

  (二)消除干扰线def open_demo(图片):

  gray=cv.cvtColor(图像,简历.COLOR_BGR2GRAY)

  ret,SSD dary=cv。阈值(灰色,0,255,变异系数.THRESH_BINARY_INVcv .OTSU)

  内核=cv。getstructuringelement(cv .吗啉_RECT,(3,3))#因为干扰线很细,小于我们想要的字母,先腐蚀后膨胀对字母无影响,但是对于细线在腐蚀的时候就处理掉了

  SSD dary=cv。形态指数(SSD dary,cv .MORPH_OPEN,内核)

  (三)提取满足要求的形状

  getStructuringElement我们设置的内核形状为矩形,是可以设置其他形状

  矩形:MORPH _ RECT;

  十字形结构:MORPH _ CORSS

  椭圆形:MORPH _ ELLIPSEdef open_demo(图片):

  gray=cv.cvtColor(图像,简历.COLOR_BGR2GRAY)

  ret,SSD dary=cv。阈值(灰色,0,255,变异系数.THRESH_BINARYcv .OTSU)

  简历。即时消息显示(“固态硬盘数据”,固态硬盘数据)

  内核=cv。getstructuringelement(cv .变形_椭圆,(5,5))

  SSD dary=cv。形态指数(SSD dary,cv .MORPH_OPEN,内核)

  cv.imshow(open_demo ,ssdpdary)

  二:闭操作(先膨胀后腐蚀)

  特点:可以填充闭合区域定义关闭_演示(图片):

  gray=cv.cvtColor(图像,简历.COLOR_BGR2GRAY)

  ret,SSD dary=cv。阈值(灰色,0,255,变异系数.THRESH_BINARYcv .OTSU)

  简历。即时消息显示(“固态硬盘数据”,固态硬盘数据)

  内核=cv。getstructuringelement(cv .墨菲_ RECT(15,15)

  SSD dary=cv。形态指数(SSD dary,cv .变形_关闭,内核)

  cv.imshow(close_demo ,ssdpdary)

  ————————————————

  版权声明:本文为程序员博主「jsjyedqt」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

  原文链接:https://博客。csdn。net/computer _ yed Qt/article/details/21819099

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

相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C语言 OpenCV实现柱面投影
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • 留言与评论(共有 条评论)
       
    验证码: