python 计算过程图片_[Python图像处理]九.图像形态学相关运算
圖像開運算
圖像開運算是圖像依次經過腐蝕,膨脹處理后的過程。圖像被腐蝕后,去除了噪聲,但是也壓縮了圖像;接著對腐蝕過的圖像進行膨脹處理,可以去除噪聲,并保留原有圖像。
開運算=膨脹
圖像開運算主要使用函數morphologyEx,它是形態學拓展的一組函數,其參數cv2.MORPH_OPEN對應開運算,其原型如下:
dst = cv2.morphologyEx(src, cv2.MORPH,kernel)
代碼如下:
importcv2importnumpy as np
src= cv2.imread("src.png", cv2.IMREAD_UNCHANGED)#設置卷積核
kernel = np.ones((5, 5), np.uint8)#圖像開運算
result =cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)#顯示圖像
cv2.imshow("src", src)
cv2.imshow("result", result)if cv2.waitKey() == 27:
cv2.destroyAllWindows()
效果如下
結果仍然存在噪聲,可以增大卷積核面積消除噪聲,例如設置為10*10,效果如下:
圖像閉運算
圖像閉運算是圖像依次經過膨脹,腐蝕處理后的過程。圖像先膨脹,后腐蝕,它有助于關閉前景物理內部的小孔或物體上的小黑點。
閉運算=腐蝕
主要使用morphologyEx函數
dst = cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel)
代碼如下:
importcv2importnumpy as np
src= cv2.imread("src.png", cv2.IMREAD_UNCHANGED)#設置卷積核
kernel = np.ones((10, 10), np.uint8)#圖像開運算
result =cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel)#顯示圖像
cv2.imshow("src", src)
cv2.imshow("result", result)if cv2.waitKey() == 27:
cv2.destroyAllWindows()
效果如下:
圖像梯度運算
圖像梯度運算時膨脹圖像減去腐蝕圖像的結果,得到圖像的輪廓圖,其中二值圖像1表示白色,0表示黑色。
梯度運算 = 膨脹-腐蝕
主要使用morphologyEx函數
dst = cv2.morphologyEx(src, cv2.MORPH_GRADIENT, kernel)
代碼如下:
importcv2importnumpy as np
src= cv2.imread("src.png", cv2.IMREAD_UNCHANGED)#設置卷積核
kernel = np.ones((10, 10), np.uint8)#圖像開運算
result =cv2.morphologyEx(src, cv2.MORPH_GRADIENT, kernel)#顯示圖像
cv2.imshow("src", src)
cv2.imshow("result", result)if cv2.waitKey() == 27:
cv2.destroyAllWindows()
效果如下:
圖像頂帽運算
圖像頂帽運算時原始圖像減去圖像開運算的結果,得到圖像的噪聲。
頂帽運算=原始圖像-開運算
dst = cv2.morphologyEx(src, cv2.MORPH_TOPHAT, kernel)
代碼如下:
importcv2importnumpy as np
src= cv2.imread("src.png", cv2.IMREAD_UNCHANGED)#設置卷積核
kernel = np.ones((5, 5), np.uint8)#圖像開運算
result =cv2.morphologyEx(src, cv2.MORPH_TOPHAT, kernel)#顯示圖像
cv2.imshow("src", src)
cv2.imshow("result", result)if cv2.waitKey() == 27:
cv2.destroyAllWindows()
效果如下:
獲取更多細節,可以加大卷積核的面積,例如10*10
圖像黑帽運算
圖像黑帽運算是圖像閉運算操作減去原始圖像的結果,得到圖像內部的小孔,或者前景中的小黑點
黑帽運算=閉運算-原始圖像
dst = cv2.morphologyEx(src, cv2.MORPH_BLACKHAT, kernel)
代碼如下:
importcv2importnumpy as np
src= cv2.imread("src.png", cv2.IMREAD_UNCHANGED)#設置卷積核
kernel = np.ones((10, 10), np.uint8)#圖像開運算
result =cv2.morphologyEx(src, cv2.MORPH_BLACKHAT, kernel)#顯示圖像
cv2.imshow("src", src)
cv2.imshow("result", result)if cv2.waitKey() == 27:
cv2.destroyAllWindows()
效果如下:
轉自:https://blog.csdn.net/Eastmount/article/details/83692456
總結
以上是生活随笔為你收集整理的python 计算过程图片_[Python图像处理]九.图像形态学相关运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 外媒称人工智能五年内会对手机产品巨变 你
- 下一篇: python web界面整合 tail_