opencv python學習筆記十四

2021-09-02 16:51:45 字數 4223 閱讀 5370

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)

#常數邊界值

結構化元素

print

(cv2.getstructuringelement(cv2.morph_rect,(5,

5)))

print

(cv2.getstructuringelement(cv2.morph_ellipse,(5,

5)))

print

(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()

#輸出結構化元素

print

(cv2.getstructuringelement(cv2.morph_rect,(5,

5)))

print

(cv2.getstructuringelement(cv2.morph_ellipse,(5,

5)))

print

(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 獲取影象的資訊 讀取 讀入彩色圖和灰度圖 獲取資訊 影象的資訊包括 行 列 通道 影象資料型別 畫素數目...