天天看點

jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門

jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門

引言

又開一個新的系列分享,對圖像處理感興趣的同學可以關注這個系列。

更新頻率盡量保持一周兩到三次推送。

新系列第一件事兒當然是資源推薦,下面是一些有關 OpenCV 的資源連結:

資源連結:

  • 官方網站:https://opencv.org/
  • GitHub:https://github.com/opencv/opencv
  • 官方文檔:https://docs.opencv.org/
  • 中文文檔(非官方):http://www.woshicver.com/
  • 官方 Demo :https://github.com/opencv/opencv/blob/master/samples/python

圖書推薦

圖書的話我就推薦一本吧,如果要看書學習絕對不能錯過的「Learning OpenCV 3」,當然,是英文原版的,中文版的話翻譯有點慘不忍睹,對英文閱讀壓力大的同學可以中英文對照着看:

jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門

安裝

OpenCV 在 Python 中有兩個類庫,一個是 

opencv-python

 ,另一個是 

opencv-contrib-python

 。

opencv-python

 是隻包含了主要子產品的包,而 

opencv-contrib-python

 包含了主要子產品以及一些擴充子產品,帶一些收費或者專利的算法,還有一些比較新的算法的進階版本。

安裝的時候選擇自己喜歡的版本裝就好了,指令如下:

# opencv-python 安裝指令pip install opencv-python
# opencv-contrib-pythonpip install opencv-contrib-python
           

安裝完成後可以通過以下代碼檢視安裝的版本資訊:

import cv2 as cv# 檢視版本資訊print(cv.getVersionString())# 輸出結果4.2.0
           

我這裡的環境為:

  • Python:3.7.4
  • opencv-python:4.2.0

圖像的基礎知識

圖像都是由像素( pixel )構成的,就像下面的這種小方格:

jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門

這些小方格每一個都有自己明确的位置和被配置設定的色彩值,而這些小方格的顔色和位置就決定了這個圖像所呈現出來的樣子。

像素是圖像中最小的機關,每一個點陣圖像包含了一定量的像素,這些像素決定圖像在螢幕上所呈現的大小。

圖像通常包括有 二值圖像 、 灰階圖像 和 彩色圖像 。

jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門

二值圖像

二值圖像就是在圖像中,任何一個點非黑即白,像素要麼為 255 (白色) 要麼為 0 (黑色) 。轉換的時候一般将像素 >=127 的設定為白色,其餘的設定為黑色。

jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門

灰階圖像

灰階圖像是除了黑白之外,還添加了第三種顔色:灰色,灰色把灰階劃分為 256 個不同的亮度,例如純白色,它的亮度級别是255。

圖像轉化為灰階圖像有以下幾種算法:

  • 浮點算法:Gray = R 0.3 + G 0.59 + B * 0.11
  • 整數方法:Gray = ( R 30 + G 59 + B * 11 ) / 100
  • 移位方法:Gray = ( R 76 + G 151 + B * 28 ) >> 8
  • 平均值法:Gray = ( R + G + B ) / 3
  • 僅取綠色:Gray = G
  • 權重平均值算法:R = G = B = R 0.299 + G 0.587 + B * 0.144
jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門

彩色圖像

彩色圖像是RGB圖像,RGB表示紅、綠、藍三原色,計算機裡所有顔色都是三原色不同比例組成的,即三色通道。

常用圖像示例代碼

上面這三種圖像的示例代碼如下:

import cv2 as cv# 讀取圖像
img = cv.imread("maliao.jpg", cv.IMREAD_COLOR)
cv.imshow("read_img", img)# 灰階圖像
img_gray = cv.cvtColor(img, cv.COLOR_RGB2GRAY)
cv.imshow("gray_img",img_gray)# 二值圖像
ret, binary = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
cv.imshow("binary_img", binary)
cv.waitKey()
           

OpenCV 入門

1. 讀入圖像

讀取圖像是通過函數 

cv.imread()

 實作。

文法:

img = cv.imread(檔案名,[,參數])
           

第二個參數是一個标志,它指定了讀取圖像的方式。

  • cv.IMREAD_COLOR: 加載彩色圖像,任何圖像的透明度都會被忽視,如果不傳參數,這個值是預設值。
  • cv.IMREAD_GRAYSCALE:以灰階模式加載圖像。
  • cv.IMREAD_UNCHANGED:加載圖像,包括alpha通道
注意:這三個标志可以簡化為 1 、 0 、 -1 。

2. 顯示圖像

顯示圖像是通過函數 

cv.imshow()

 函數實作。

文法:

cv.imshow(視窗名, 圖像名)
           

3. 視窗等待

顯示圖像是通過函數 

cv.waitKey(delay)

 函數實作。

文法:

cv.waitKey(delay)
           

cv.waitKey()

 是一個鍵盤綁定函數。其參數是以毫秒為機關的時間。該函數等待任何鍵盤事件指定的毫秒。如果您在這段時間内按下任何鍵,程式将繼續運作。如果 0 被傳遞,它将無限期地等待一次敲擊鍵。

4. 删除視窗

調用函數如下:

cv.destroyAllWindows() 删除所有視窗cv.destroyWindows() 删除指定的視窗
           

5. 寫入圖像

調用函數如下:

cv.imwrite(檔案位址, 檔案名)
           

代碼示例

我們讀取一張圖檔,将這張圖檔顯示出來後,再将這張圖檔儲存起來。

import cv2 as cv# 讀取圖檔
img = cv.imread("maliao.jpg", 1)# 顯示圖檔
cv.imshow("demo", img)# 等待輸入
cv.waitKey(0)
cv.destroyAllWindows()# 圖檔寫入
cv.imwrite("demo.jpg", img)
           
jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門

這裡需要注意的是 

cv.waitKey(0)

 必須要加,如果不等待輸入,整個窗體将會一閃而過。

示例代碼

如果有需要擷取源碼的同學可以在公衆号回複「OpenCV」進行擷取。

參考

https://blog.csdn.net/Eastmount/article/details/81748802

http://woshicver.com/

感謝閱讀

jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門
jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門
jetson nano 檢視opencv版本_Python 圖像處理 OpenCV (1):入門

繼續閱讀