基於python的opencv專案實戰P4

2021-10-02 21:48:59 字數 3965 閱讀 2692

形態學-腐蝕操作

import cv2 

import matplotlib.pyplot as plt

import numpy as np

get_ipython(

).run_line_magic(

'matplotlib'

,'inline'

)#腐蝕dige

img = cv2.imread(

'dige.png'

)cv2.imshow(

'img'

,img)

cv2.waitkey(0)

cv2.destroyallwindows(

)kernel = np.ones((5

,5),np.uint8)

erosion = cv2.erode(img,kernel,iterations =2)

# kernel 為5x5方格 ; 迭代次數2

cv2.imshow(

'erosion'

,erosion)

cv2.waitkey(0)

cv2.destroyallwindows(

)#腐蝕pie

)#不同迭代次數對比

kernel = np.ones((30

,30),np.uint8)

erosion_1= cv2.erode(pie,kernel,iterations =1)

erosion_2= cv2.erode(pie,kernel,iterations =2)

erosion_3= cv2.erode(pie,kernel,iterations =3)

res = np.hstack(

(erosion_1,erosion_2,erosion_3)

)cv2.imshow(

'res'

,res)

cv2.waitkey(0)

cv2.destroyallwindows(

)

形態學-膨脹操作
#匯入

img = cv2.imread(

'dige.png'

)cv2.imshow(

'img'

,img)

cv2.waitkey(0)

cv2.destroyallwindows(

)#去毛刺

kernel = np.ones((3

,3),np.uint8)

dige_erosion = cv2.erode(img,kernel,iterations =1)

# kernel 為3x3方格 ; 迭代次數

cv2.imshow(

'erosion'

,erosion)

cv2.waitkey(0)

cv2.destroyallwindows(

)#膨脹操作

)#不同迭代次數

kernel = np.ones((30

,30),np.uint8)

dilate_1= cv2.dilate(pie,kernel,iterations =1)

dilate_2= cv2.dilate(pie,kernel,iterations =2)

dilate_3= cv2.dilate(pie,kernel,iterations =3)

res = np.hstack(

(dilate_1,dilate_2,dilate_3)

)cv2.imshow(

'res'

,res)

cv2.waitkey(0)

cv2.destroyallwindows(

)

開運算與閉運算
#開運算:先腐蝕,再膨脹

img = cv2.imread(

'dige.png'

)kernel = np.ones((3

,3),np.uint8)

opening = cv2.morphologyex(img,cv2.morph_open,kernel)

cv2.imshow(

'opening'

,opening)

cv2.waitkey(0)

cv2.destroyallwindows(

)#閉運算:先膨脹,再腐蝕

img = cv2.imread(

'dige.png'

)kernel = np.ones((3

,3),np.uint8)

closing = cv2.morphologyex(img,cv2.morph_close,kernel)

cv2.imshow(

'closing'

,closing)

cv2.waitkey(0)

cv2.destroyallwindows(

)

梯度運算
#梯度=膨脹-腐蝕

#得到膨脹與腐蝕

)#邊界資訊

gradient = cv2.morphologyex(pie,cv2.morph_gradient,kernel)

cv2.imshow(

'gradient'

,gradient)

cv2.waitkey(0)

cv2.destroyallwindows(

)

禮帽與黑帽

• 禮帽=原始輸入-開運算

• 黑帽=閉運算-原始輸入

#禮帽

img = cv2.imread(

'dige.png'

)tophat = cv2.morphologyex(img,cv2.morph_tophat,kernel)

cv2.imshow(

'tophat'

,tophat)

cv2.waitkey(0)

cv2.destroyallwindows(

)#黑帽

img = cv2.imread(

'dige.png'

)blackhat = cv2.morphologyex(img,cv2.morph_blackhat,kernel)

cv2.imshow(

'blackhat'

,blackhat)

cv2.waitkey(0)

cv2.destroyallwindows(

)

基於python的opencv教程

第一次寫部落格,學習是要有輸入與輸出的,所謂教學相長。所以我想試著自己寫乙份教程,算是對自己的學習總結吧,部落格的排版比較直男,請湊合看吧。首先建議的ide是pycharm,opencv的庫直接pip安裝就好,最好大家有一定的python基礎。第一部分是關於圖象讀取和儲存。import cv2imp...

基於python的opencv學習

dst cv2.sobel src,ddept,dx,dy,ksize ddepth 影象的深度,一般設為 1ksize sobel運算元的大小 白到黑是正數,黑到白是負數,所有的負數都會被截斷為0,因此要使用convertscaleabs取絕對值2 拉普拉斯金字塔 1 低通濾波 2 縮小尺寸pyr...

基於Python的OpenCV人臉檢測

注意 本文只是人臉檢測,人臉識別的實現請參見本人另一篇部落格 基於opencv tensorflow keras實現人臉識別 提前做的準備 1 和說明 import cv2 as cv import numpy as np defface detect demo 人臉檢測函式 gray cv.cvt...