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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。