最近在图片识别的任务中用到了opencv框架,里边有很多函数用的不是很清除,甚至有点耽误任务进度。现在任务完成了,特对opencv里边的框架进行一个梳理,希望能帮助到需要的人。
形态学操作
getStructuringElement
kernal=cv2.getStructuringElement(cv2.MORPH_RECT, (1, 7))cv2.MORPH_RECT:矩形。 # cv2.MORPH_CROSS:十字形。 # cv2.MORPH_ELLIPSE:椭圆形。 # kernal为内核,内核的尺寸是 (width, height),这里我们设置宽度为 1,高度为较大的值以影响垂直方向。 # 即不论是腐蚀还是膨胀都在垂直方向明显,而在水平方向不明显。
erode
可以去毛刺,但有用信息得到了一些损坏。腐蚀次数越多,外层数据越少,保留的有用信息越少
#binary为二值图像,eroded为腐蚀后的图片,内核大小和迭代次数都会影响腐蚀效果 eroded=cv2.erode(binary, (9,9), iterations=10)
dilate
#binary为二值图像,eroded为腐蚀后的图片,内核大小和迭代次数都会影响腐蚀效果 dilated=cv2.dilate(binary, (9,9), iterations=10)
cv2.morphologyEx(运算过后的图片与原本的图片有位置上的差异)
closed=cv2.morphologyEx(img,cv2.MORPH_CLOSE, (9,9),iterations=15) opened=cv2.morphologyEx(img,cv