6. Opencv イメージの縮小と拡張 (オープン操作、クローズ操作)

1. 画像の腐食

この操作により、前景オブジェクトの境界が侵食されます。これはどのようにして可能でしょうか? コンボリューション カーネルは画像に沿ってスライドします。コンボリューション カーネルに対応する画像のピクセル値がすべて 1 の場合、この領域のピクセル値はすべて 1 になり、それ以外の場合は 0 になります。ホワイトノイズの除去、接続されている 2 つのオブジェクトの切断などに役立ちます。

構文: cv2.erode(img,kernel,iterations=1)

img:入力画像を示します。

kernel:定義されたコンボリューション カーネルを示します。

iterations:腐食の反復回数、平たく言えば腐食の回数を示します。

import cv2  
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread("C:\\Users\\zhangqs\\Desktop\\pie.png", cv2.IMREAD_COLOR)

#腐蚀操作 将有价值的信息缩小
kernel=np.ones((30,30),np.uint8)
erode1=cv2.erode(img,kernel,iterations=1) #迭代次数1
erode2=cv2.erode(img,kernel,iterations=2) #迭代次数2
erode3=cv2.erode(img,kernel,iterations=3) #迭代次数3

res=np.hstack((img,erode1,erode2,erode3))
cv2.imshow('erode', res)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

実行結果

 2. イメージのインフレ

構文: cv2.dilate(img,kernel,iterations=2)

img:入力画像を示します。

kernel:定義されたコンボリューション カーネルを示します。

iterations:腐食の反復回数、平たく言えば腐食の回数を示します。

import cv2  
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread("C:\\Users\\zhangqs\\Desktop\\pie.png", cv2.IMREAD_COLOR)

#膨胀操作 将有价值的信息放大
kernel=np.ones((30,30),np.uint8)
dilate1=cv2.dilate(img,kernel,iterations=1) #迭代次数1
dilate2=cv2.dilate(img,kernel,iterations=2) #迭代次数2
dilate3=cv2.dilate(img,kernel,iterations=3) #迭代次数3

res2=np.hstack((img,dilate1,dilate2,dilate3))
cv2.imshow('dilate', res2)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

実行結果

 3. オープン操作: 最初に腐食し、次に拡張します。

構文: cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)

import cv2  
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread("C:\\Users\\zhangqs\\Desktop\\pie.png", cv2.IMREAD_COLOR)

#开运行:先腐蚀,再膨胀
kernel=np.ones((30,30),np.uint8)
open=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
cv2.imshow('open', open)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

 

 

 4. 密閉操作: 最初に拡張し、次に腐食します。

構文: cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

import cv2  
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread("C:\\Users\\zhangqs\\Desktop\\pie.png", cv2.IMREAD_COLOR)
 
#闭运算:先膨胀,再腐蚀
kernel=np.ones((30,30),np.uint8)
close=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
cv2.imshow('close', close)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

 5. グラデーション、シルクハット、ブラックハット

勾配 = 膨張 - 侵食(cv2.MORPH_GRADIENT)

トップハット = 元の入力 - オープン演算結果 (cv2.MORPH_TOPHAT)

ブラックハット = 閉じた演算結果 - 元の入力 (cv2.MORPH_BLACKHAT)

import cv2  
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread("C:\\Users\\zhangqs\\Desktop\\pie.png", cv2.IMREAD_COLOR)
 
#梯度=膨胀-腐蚀
kernel=np.ones((5,5),np.uint8)
gradient=cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
cv2.imshow('gradient', gradient)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

#礼帽=原始输入-开运算结果
kernel=np.ones((5,5),np.uint8)
tophat=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
cv2.imshow('tophat', tophat)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

#黑帽=闭运算结果-原始输入
kernel=np.ones((5,5),np.uint8)
blackhat=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)
cv2.imshow('blackhat', blackhat)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

おすすめ

転載: blog.csdn.net/a497785609/article/details/131208393