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...