OpenCV是一個開源的計算機視覺庫,裏面封裝了很多圖像處理方面的優秀算法:例如圖片輪廓邊緣檢測,特徵點提取…,可以在Windows,Linux,Mac等平臺使用;雖然OpenCv是用 C++ 編寫的,並且現在主要接口也是 C++ 語言的但,現在該庫也同時提供大量面向 python、matlab以及Java。
OpenCV在python是以 cv2 庫存在的,安裝起來非常簡單,同樣是利用 pip 安裝;
OpenCv在 python中的安裝方法:打開命令行或者 Anaconda Prompt 輸入以下命令
pip insatll opencv-python #利用命令行命安裝;
conda install opencv-python #利用 Anaconda Prompt 中進行安裝
測試一下庫是否安裝成功,在命令行中啓動 python;接着輸入 import cv2 沒有報錯即可代表成功.
C:\Users\dell>python
Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load. To activate this environment
please see https://conda.io/activation
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>>
OpenC的讀寫函數介紹
讀取圖片:cv2.imread(path,flags)
- path就是需要讀取圖片的本地位置;
- 第二個參數 flags 是讀取方式,代表的是你所讀取的圖片是什麼樣的,這裏Opencv把它分爲了三類分別是-1,0,1,參數默認爲1;
- 爲 1 時,參數爲 cv2.IMREAD_COLOR ,圖片以RGB的方式讀出;
- 爲 0 時,參數爲 cv2.IMREAD_GRAYSCALE , 圖片以灰質圖(黑白)的方式讀出;
- 爲 -1 時,參數爲 cv2.IMREAD_UNCHANGED ,圖片爲 alpha 通道的方式讀出;
圖片展示 cv2.imshow()
cv2.imshow()含有兩個參數,第一個指的是要展示圖片窗口的名字,第二個就是需要展示的照片,例如:
cv2.imshow('image',img);
在展示之前可以加一行代碼,用來防止圖片太大,造成圖片無法展示的問題:
cv2.namedWindow('window.name',cv2.WINDOW_NORMAL);
cv2.Waitkey(0);
cv2.destoryallwindows();#銷燬所有已經創建的窗口;
- cv2.destorywindow(“windows_name”) * ;用來銷燬特定名字的窗口,這裏windows_name代表自己準備銷燬窗口的名字;
圖片寫出 cv2.imwrite()
python 中的OpenCV庫裏裏面含有讀入、展示函數,當然也有寫出函數,是以 imwrite 函數實現,具體使用方法如下:
cv2.imwrite('a.png',img);#將圖片以 a.png 的形式寫出,
這裏的 a.png 當然也可以以路徑來進行替換。
img = cv2.imread('F:/pic_url/a.jpg',0)
img2 = cv2.imread('F:/pic_url/a.jpg',1)
cv2.namedWindow('RGB',cv2.WINDOW_NORMAL)
cv2.namedWindow('GRAY',cv2.WINDOW_NORMAL)
cv2.imshow('RGB',img2)
cv2.imshow('GRAY',img)
cv2.imwrite('F:/pic_url/a_rgb.png',img2)
cv2.imwrite('F:/pic_url/a_gray.png',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
效果圖如下:
保存後的圖片:
這幾行代碼就是對 Opencv庫 讀寫功能的的基本總結;
- 首先是把 圖片a.jpg 分別以 RGB 和灰質圖 形式讀出,並把讀出的內容賦值給 img2 和 img;
- 創建兩個窗口,分別命名爲 RGB 和 GRAY ,創建形式就是以 NORMAL_WINDOW 的形式(系統自定義合適的窗口大小);
- 分別在 RGB 和 GRAY 窗口中展示 img2 和 img 的內容;
- 把 img2 和 img 的內容存入 rgb.png 和 gray.png 兩張圖片當中;
- 等待用戶命令;
- 銷燬所有已經創建的窗口;