安裝OpenCV的的兩種方法
1、幾點注意事項:
安裝的時候是 opencv_python,但在導入的時候采用 import cv2。
因為OpenCV依賴一些庫,可以在本部落格中查找一些依賴庫的安裝方法,例如安裝Numpy方法等,本部落格應有盡有!
T1、使用whl檔案法
先去官網
https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv,下載下傳相應Python版本的OpenCV的whl檔案,如本人下載下傳的opencv_python‑3.4.1‑cp36‑cp36m‑win_amd64.whl,然後在whl檔案所在目錄下,指令 進行安裝即可

pip install opencv_python‑3.4.1‑cp36‑cp36m‑win_amd64.whl
T2、直接指令法
pip install opencv-python
最後,檢測安裝情況
哈哈,大功告成!
T3、Anaconda 環境下安裝
pip install opencv-python //Anaconda 環境下安裝,先打開Anaconda Prompt,再輸入本指令進行安裝!
20191128更新記錄
OpenCV常見函數、方法
Welcome to OpenCV-Python Tutorials’s documentation!
CV:計算機視覺圖像的基礎知識—以python的cv2庫來了解計算機視覺圖像基礎
0、基本庫函數
cv2.imread(filepath,flags) #讀入一張圖像
filepath:要讀入圖檔的完整路徑
flags:讀入圖檔的标志
cv2.IMREAD_COLOR:預設參數,讀入一副彩色圖檔,忽略alpha通道
cv2.IMREAD_GRAYSCALE:讀入灰階圖檔
cv2.IMREAD_UNCHANGED:顧名思義,讀入完整圖檔,包括alpha通道
cv2.imshow(wname,img) #顯示圖像
第一個參數是顯示圖像的視窗的名字
第二個參數是要顯示的圖像(imread讀入的圖像),視窗大小自動調整為圖檔大小
cv2.imshow('image',img)
cv2.waitKey(0) #等待鍵盤輸入,機關為毫秒,即等待指定的毫秒數看是否有鍵盤輸入,若在等待時間内按下任意鍵則傳回按鍵的ASCII碼,程式繼續運作。
#若沒有按下任何鍵,逾時後傳回-1。參數為0表示無限等待。不調用waitKey的話,視窗會一閃而逝,看不到顯示的圖檔。
cv2.destroyAllWindow() #銷毀所有視窗
cv2.destroyWindow(wname) #銷毀指定視窗
cv2.imwrite(file,img,num) #儲存一張圖像
第一個參數是要儲存的檔案名
第二個參數是要儲存的圖像。可選的第三個參數,它針對特定的格式:對于JPEG,其表示的是圖像的品質,用0 - 100的整數表示,預設95。
第三個參數表示的是壓縮級别。預設為3.
img.copy() #圖像複制
cv2.cvtColor() #圖像顔色空間轉換
img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) #灰階化:彩色圖像轉為灰階圖像
img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB) #彩色化:灰階圖像轉為彩色圖像
# cv2.COLOR_X2Y,其中X,Y = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS
cv2.resize(image, image2,dsize) #圖像縮放:(輸入原始圖像,輸出新圖像,圖像的大小)
cv2.flip(img,flipcode) #圖像翻轉,flipcode控制翻轉效果。
flipcode = 0:沿x軸翻轉;flipcode > 0:沿y軸翻轉;flipcode < 0:x,y軸同時翻轉
cv2.warpAffine(img, M, (400, 600)) #圖像仿射變換 :平移;裁剪、剪切、旋轉、仿射變換,
M、M_crop、M_shear、M_rotate
cv2.putText(img,'text',(50,150) #圖像添加文字:(照片,添加的文字,左上角坐标,字型,字型大小,顔色,字型粗細)
cv2.putText(image, caption, (b[0], b[1] - 10), cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), 1)
cv2.putText(I,'there 0 error(s):',(50,150),cv2.FONT_HERSHEY_COMPLEX,6,(0,0,255),25)
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2) #畫出矩行:img原圖、(x,y)是矩陣的左上點坐标、(x+w,y+h)是矩陣的右下點坐标、(0,255,0)是畫線對應的rgb顔色、2是所畫的線的寬度。
cv2.boundingRect(img) #傳回圖像的四值屬性:img是一個二值圖,即是它的參數; 傳回四個值,分别是x,y,w,h; x,y是矩陣左上點的坐标,w,h是矩陣的寬和高。
1、圖像基本運算
圖像的基本運算有很多種,比如兩幅圖像可以相加、相減、相乘、相除、位運算、平方根、對數、絕對值等;圖像也可以放大、縮小、旋轉,還可以截取其中的一部分作為ROI(感興趣區域)進行操作,各個顔色通道還可以分别提取及對各個顔色通道進行各種運算操作。
bitwise_and、bitwise_or、bitwise_xor、bitwise_not四個按位操作函數,是将基礎數學運算應用于圖像像素的進行中。
bitwise_and、bitwise_or、bitwise_xor、bitwise_not這四個按位操作函數。
void bitwise_and(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 & src2
void bitwise_or(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 | src2
void bitwise_xor(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 ^ src2
void bitwise_not(InputArray src, OutputArray dst,InputArray mask=noArray());//dst = ~src
bitwise_and():是對二進制資料進行“與”操作,即對圖像(灰階圖像或彩色圖像均可)每個像素值進行二進制“與”操作,1&1=1,1&0=0,0&1=0,0&0=0
bitwise_or():是對二進制資料進行“或”操作,即對圖像(灰階圖像或彩色圖像均可)每個像素值進行二進制“或”操作,1|1=1,1|0=0,0|1=0,0|0=0
bitwise_xor():是對二進制資料進行“異或”操作,即對圖像(灰階圖像或彩色圖像均可)每個像素值進行二進制“異或”操作,1^1=0,1^0=1,0^1=1,0^0=0
bitwise_not():是對二進制資料進行“非”操作,即對圖像(灰階圖像或彩色圖像均可)每個像素值進行二進制“非”操作,~1=0,~0=1
2、Image.open 和cv2.imread 的差別及其轉換
Image.open 打開來的圖像格式,cv2.imread 讀出來是像素格式。
# 1、PIL.Image轉換成OpenCV格式:
import cv2
from PIL import Image
import numpy
path = 'F:/File_Python/Resources/face_images/LZT01.jpg'
img = Image.open(path).convert("RGB")#.convert("RGB")可不要,預設打開就是RGB
img.show()
#轉opencv
#img = cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR)
img = cv2.cvtColor(np.array(img),cv2.COLOR_RGB2BGR)
cv2.imshow("OpenCV",img)
cv2.waitKey()
# 2、OpenCV轉換成PIL.Image格式
img = cv2.imread('F:/File_Python/Resources/face_images/LZT01.jpg') # opencv打開的是BRG
image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
image.show()
相關應用:CV:利用python的cv2庫實作圖像資料增強—随機裁剪、随機旋轉、随機hsv變換、随機gamma變換代碼實作