17 形態學轉換
形態學操作: 腐蝕
膨脹開運算
閉運算
常用函式:
cv2.erode()
cv2.dilate()
cv2.morphologyex()
1 腐蝕
deferode(src,
#源影象
kernel,
#腐蝕操作的核心
dst=none,
#輸出影象
anchor=none,
#核心中心點
iterations=none,
#腐蝕次數
bordertype=none,
#推斷邊緣型別
bordervalue=none)
#邊緣值
2 膨脹
defdilate(src,
#源影象
kernel,
#腐蝕操作的核心
dst=none,
#輸出影象
anchor=none,
#核心中心點
iterations=none,
#腐蝕次數
bordertype=none,
#推斷邊緣型別
bordervalue=none)
#邊緣值
3 開運算
先腐蝕再膨脹
4 閉運算
先膨脹再腐蝕
5 形態學梯度
膨脹與腐蝕的差別
6 禮帽
原始影象與進行開運算進行後的影象的差
7 黑帽
進行閉運算之後得到的影象與原始影象的差
函式原型
defmorphologyex(src,
#輸入影象
op,
#形態**算型別
kernel,
#核心
dst=none,
#輸出影象
anchor=none,
#中心錨點
iterations=none,
#函式迭代次數
bordertype=none,
#邊界模式
bordervalue=none)
#常數邊界值
結構化元素
(cv2.getstructuringelement(cv2.morph_rect,(5,
5)))
(cv2.getstructuringelement(cv2.morph_ellipse,(5,
5)))
(cv2.getstructuringelement(cv2.morph_cross,(5,
5)))
輸出結果如下:
[[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]]
[[0 0 1 0 0]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[0 0 1 0 0]]
[[0 0 1 0 0]
[0 0 1 0 0]
[1 1 1 1 1]
[0 0 1 0 0]
[0 0 1 0 0]]
示例**如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @time : 2016/11/17 14:59
# @author : retacn
# @site :
# @file : imageerode.py
# @software: pycharm
importcv2
importnumpyasnp
frommatplotlibimportpyplotasplt
img=cv2.imread('../j.png')
kernel=np.ones((5,
5),np.uint8)#腐蝕
dst1=cv2.erode(img,kernel,
iterations=1
)#膨脹dst2=cv2.dilate(img,kernel,
iterations=1
)#開運算dst3=cv2.morphologyex(img,cv2.morph_open,kernel)
#閉運算
dst4=cv2.morphologyex(img,cv2.morph_close,kernel)
#形態梯度學
dst5=cv2.morphologyex(img,cv2.morph_gradient,kernel)#禮帽
dst6=cv2.morphologyex(img,cv2.morph_tophat,kernel)#黑帽
dst7=cv2.morphologyex(img,cv2.morph_blackhat,kernel)#正常
plt.subplot(
331),plt.imshow(img),plt.title('normal')
plt.xticks(),plt.yticks()#腐蝕
plt.subplot(
332),plt.imshow(dst1),plt.title('erode')
plt.xticks(),plt.yticks()#膨脹
plt.subplot(
333),plt.imshow(dst2),plt.title('open')
plt.xticks(),plt.yticks()
#開運算
plt.subplot(
334),plt.imshow(dst3),plt.title('close')
plt.xticks(),plt.yticks()
#閉運算
plt.subplot(
335),plt.imshow(dst4),plt.title('dilate')
plt.xticks(),plt.yticks()
#形態學梯度
plt.subplot(
336),plt.imshow(dst5),plt.title('gradient')
plt.xticks(),plt.yticks()#禮帽
plt.subplot(
337),plt.imshow(dst6),plt.title('tophat')
plt.xticks(),plt.yticks()#黑帽
plt.subplot(
338),plt.imshow(dst7),plt.title('blackhat')
plt.xticks(),plt.yticks()
#輸出結構化元素
(cv2.getstructuringelement(cv2.morph_rect,(5,
5)))
(cv2.getstructuringelement(cv2.morph_ellipse,(5,
5)))
(cv2.getstructuringelement(cv2.morph_cross,(5,
5)))
plt.show()
opencv python學習筆記八
十 影象上的算術運算 常用運算有 加法 減法 位運算 cv2.add cv2.addweighted 函式原型 defadd src1,src2,dst none,mask none,dtype none defaddweighted src1,第乙個原陣列 alpha,第乙個原陣列的權值 src2...
opencv python學習筆記十一
14 幾何變換 移動,旋轉 仿射變換 常用函式 cv2.getperspectivetransform 函式原型 defgetperspectivetransform src,dst cv2.warpaffine 函式原型,接收 2 3的矩陣 defwarpaffine src,輸入源影象 m,透視...
OpenCV python學習筆記 二
不多說,上 全在裡面 coding utf 8 import numpy as np import cv2 目標 獲取畫素值並修改 獲取影象的資訊 影象的rio 圖象通道的拆分及合併 step1 獲取影象的資訊 讀取 讀入彩色圖和灰度圖 獲取資訊 影象的資訊包括 行 列 通道 影象資料型別 畫素數目...