python opencv常用方法的使用例程

2021-08-22 19:10:57 字數 3699 閱讀 3008

import cv2  #cv2.__version__==3.2.0

import numpy as np

#讀取,顯示,寫

# cv2.imshow('show', img) #顯示

print(np.shape(img))

# cv2.waitkey() #waitkey(int delay=0),當delay≤ 0,將無限期的等待下去;當delay>0時,就是等待delay毫秒。

img_crop=img[10:100,10:200]

cv2.imwrite('img_write.tif',img_crop)

exit()

img=cv2.imread('test1.jpg')  #注意,python中opencv讀取的通道是bgr,和別的可能不太一樣

img_gray=cv2.cvtcolor(img,cv2.color_bgr2gray) #轉成灰度影象,第二個引數改變可以進行別的顏色轉換

cv2.imshow('show', img_gray)

cv2.imshow('all',img)

cv2.imshow('b',img[:,:,0])

cv2.imshow('g',img[:,:,1])

cv2.imshow('r',img[:,:,2])

r_img=img[:,:,0]

print(np.shape(r_img))

cv2.waitkey()

#影象的平移

num_rows,num_cols=img.shape[:2] #影象的size

translation_matrix = np.float32([ [1,0,-70], [0,1,110] ]) #變換矩陣m為[1,0,tx,

# 0,1,ty] x方向和y方向的偏移量

img_translation = cv2.warpaffine(img, translation_matrix, (num_cols,num_rows))

#需要影象、變換矩陣、變換後的大小,(這個大小如果不和原始影象大小相同,那麼函式會自 動通過插值來調整畫素間的關係)。

cv2.imshow('translation', img_translation)

cv2.waitkey()

#影象的擴大與縮小

'''影象的擴大與縮小有專門的乙個函式,cv2.resize(),那麼關於伸縮需要確定的就是縮放比例,可以是x與y方向

相同倍數,也可以單獨設定x與y的縮放比例。另外乙個就是在縮放以後影象必然就會變化,這就又涉及到乙個插值

問題。那麼這個函式中,縮放有幾種不同的插值(interpolation)方法,在縮小時推薦cv2.inter_arer,擴大

是推薦cv2.inter_cubic和cv2.inter_linear。預設都是cv2.inter_linear,比如:

# 插值:interpolation

# none本應該是放影象大小的位置的,後面設定了縮放比例,

res1 = cv2.resize(img,none,fx=2,fy=2,interpolation=cv2.inter_cubic)

#直接規定縮放大小,這個時候就不需要縮放因子

height,width = img.shape[:2]

res2 = cv2.resize(img,(2*width,2*height),interpolation=cv2.inter_cubic)

#影象旋轉

'''影象的旋轉矩陣一般為:

m=[cos(θ) −sin(θ)

sin(θ) cos(θ)]

但是單純的這個矩陣是在原點處進行變換的,為了能夠在任意位置進行旋轉變換,opencv採用了另一種方式:

m=[α -β (1−α)centerx−βcentery

-β α βcenterx+(1−α)centery]

為了構造這個矩陣,opencv提供了乙個函式:

cv2.getrotationmatrix2d(),這個函式需要三個引數,旋轉中心,旋轉角度

rows,cols = img.shape[:2]

#第乙個引數旋轉中心,第二個引數旋轉角度,第三個引數:縮放比例

m = cv2.getrotationmatrix2d((cols/2,rows/2),45,1)

#第三個引數:變換後的影象大小

res = cv2.warpaffine(img,m,(rows,cols))

cv2.imshow("原圖",img)

cv2.imshow("變換後影象",res)

#邊緣檢測

sobel_horizontal = cv2.sobel(img, cv2.cv_64f, 1, 0, ksize=5) #利用sobel運算元進行邊緣檢測,x方向

sobel_vertical = cv2.sobel(img, cv2.cv_64f, 0, 1, ksize=5) #利用sobel運算元進行邊緣檢測,y方向

kernel_1 = np.array([[-1,0,1], [-2,0,2], [-1,0,1]]) #利用影象卷積的方法進行邊緣放大

kernel_2 = np.array([[-1,-2,-1], [0,0,0], [1,2,1]]) #利用影象卷積的方法進行邊緣放大

output=cv2.filter2d(img, -1,kernel=kernel_1)

cv2.imshow('ker1',output)

output2=cv2.filter2d(img, -1,kernel=kernel_2)

cv2.imshow('ker2',output2)

cv2.imshow('original', img)

cv2.imshow('sobel horizontal', sobel_horizontal)

cv2.imshow('sobel vertical', sobel_vertical)

cv2.waitkey(0)

#erode dilate 腐蝕膨脹

python opencv常用函式

讀取 灰度變換 gray cv2.cvtcolor src,cv2.color rgb2gray 顯示 cv2.imshow gray gray cv2.waitkey 0 裁剪 src src y1 y2,x1 x2 複製 copyimg src.copy 建立mser物件 mser cv2.ms...

整理python opencv常用方法和報錯

沒有讀取到檔案,可能是路徑 檔名 字尾錯了 引數型別錯誤或兩個引數大小不一致,出現在cv2.bitwise and 中,可以.dtype,shape檢視 def cvtcolor src,code,dst none,dstcn none 影象型別轉換,code cv2.color gray2bgr灰...

selenium webdriver 常用方法

1 獲得頁面的原始碼 driver.get source code driver.getpagesource 如果想將獲得的網頁原始碼儲存成檔案的話 f open r c html source code.html w f.write source code.encode utf 8 f.close...