1 腐蝕操作
用于圖片的去毛刺,內容削減
1 #腐蝕操作 2 #cv2.erode(src,kernel,iterations) 3 #src是圖片數字化陣列 4 #kernel則是一個盒,對該盒內的像素進行復試操作,值越小腐蝕能力越狠 5 #iterations是一個迭代次數,就是說你對這個圖片進行幾次的腐蝕操作 6 kernel = np.ones((30,30),np.uint8) 7 erosion1 = cv2.erode(img,kernel,iterations=1) 8 erosion2 = cv2.erode(img,kernel,iterations=2) 9 erosion3 = cv2.erode(img,kernel,iterations=3) 10 res = np.hstack((erosion1,erosion2,erosion3)) 11 Cv_Show('Erode Picture',res)
2 膨脹操作
1 #膨脹操作 2 #因為在進行腐蝕操作后,原本不需要的腐蝕的地方會變細,此時可以通過膨脹操作加回來 3 #cv2.dilate(src,kernel,iterations) 4 #src是影像數字化陣列 5 #Kernel為盒,對該盒內的像素進行膨脹操作,值越小膨脹能力越強 6 #iterations是一個迭代次數,就是說你對這個圖片進行幾次的膨脹操作 7 kernel = np.ones((30,30),np.uint8) 8 dilate1 = cv2.dilate(img,kernel,iterations=1) 9 dilate2 = cv2.dilate(img,kernel,iterations=2) 10 dilate3 = cv2.dilate(img,kernel,iterations=3) 11 res = np.hstack((dilate1,dilate2,dilate3)) 12 Cv_Show('Erode Picture',res)
3 開運算,閉運算
1 #開運算就是先腐蝕后膨脹,閉運算是先膨脹后腐蝕 2 #cv2.morphologyEx(src,type,kernel) 3 #src是影像數字化陣列 4 #type有cv2.MORPH_OPEN,cv2.MORPH_CLOSE兩種 5 #cv2.MORPH_OPEN就是開運算 6 #cv2.MORPH_CLOSE就是閉運算 7 #Kernel為盒,對該盒內的像素進行膨脹操作,值越小膨脹能力越強 8 kernel3 = np.ones((30,30),np.uint8) 9 opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel3) #使用開運算 10 closeing = cv2.MORPH_OPEN(img,cv2.MORPH_CLOSE,kernel3) #使用閉運算 11 res = np.hstack((opening,closeing)) 12 Cv_Show('morphologyEx Picture', res)
4 梯度運算
1 #梯度運算 2 #梯度 = 膨脹 - 腐蝕 3 #梯度運算是為了得到邊界變化的資訊 4 gradient = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel3) 5 Cv_Show('Gradient Picture', gradient)
5 禮帽與黑帽
1 #禮帽和黑帽 2 #禮帽 = 原始輸入 - 開運算結果 從理論上來說,一個帶毛刺的圖片優化后沒有毛刺 - 原始有毛刺的圖,那結果是毛刺 3 #黑帽 = 閉運算 - 原始輸入 同樣,因為先對毛刺先膨脹后腐蝕,所以有些毛刺可能沒腐蝕掉,減去原始后,結果是那些沒腐蝕掉的毛刺的邊緣 4 topHat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel3) 5 blackHat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel3) 6 res = np.hstack((topHat,blackHat)) 7 Cv_Show('TopHat vs BlackHat Picture', res)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/550777.html
標籤:其他
上一篇:java獲取到heapdump檔案后,如何快速分析?
下一篇:返回列表
