基於Python的Opencv學習

基於python的opencv學習第一天

各位同學習opencv的小夥伴們,大家好。首先介紹一下,這是我第一次寫博客,講述的是關於opencv的非常非常基礎的知識點,有一些我個人學習的看法和總結,希望幫助剛剛入門的opencv學習者們,當然也肯定有錯誤的地方,希望大佬看見手下留情。大家共同進步,把opencv學好把!!!

一.圖像的基礎知識

首先,我想給大家介紹一下關於圖像的一些知識,這些知識對於我們這種急於立即看見學習效果的opencv學習者來說,可能顯得不是很重要,但是我想畢竟opencv是用在視覺處理方面,既然說到視覺,就不能躲避談圖像的基礎知識。(如果大家對圖像基礎瞭解的很透徹,可以直接跳過)
1.像素
圖像是由像素點構成,所謂像素,我個人理解就是一個一個點,像素越高,代表着那個點的大小越小,反之,像素點越大,構成的圖片看上去就越不平滑。如圖左邊就是像素低,像素點大,給人感覺就是看上去很粗糙,右上圖就是像素高,像素點小,給人感覺很細膩。比較一個像素高低,就是看拍出來的圖片的效果是否細膩,通俗來說,500W像素就是右上那幅圖,1000像素就是左邊那幅圖。在這裏插入圖片描述
2. 圖像分類
圖像可以分成三類,分別是二值圖像,灰度圖像,RGB圖像。![在這裏插入圖在這裏插入圖片描述
二值圖像非黑即白,他的像素點只要黑白兩種顏色,在計算機中用0和1來表示;灰度圖像即在二值圖像上加了灰色,在計算機中用0-255來表示(0代表黑色,255代表白色,其餘的數字代表254中灰色);RGB圖像就是彩色圖像,在計算機中所有顏色都能由紅,綠,藍三種顏色構成,只不過三種顏色的比例不一樣,三種顏色也是從0-255。任何一個彩色圖像都是由三個灰度圖像拼成彩色圖像,只不過三個彩色圖像比例不同。在這裏插入圖片描述
同樣,我們可以從彩色圖像轉變成灰度圖像,從灰度圖像轉變成二值圖像,都是方便計算機進行計算,可能有小夥伴會問,這樣轉變會不會丟失信息,答案是不會的。舉個栗子,從彩色轉變成灰色圖像,從三份變成一份,從三個數據變成一個數據,這樣大大節約了CPU的計算時間,同時對三分數據進行加權處理(可能是這樣處理),肯定能夠保證圖像數據不丟失。

二.圖片處理

1.讀入圖像
在opencv中讀入圖像用cv2.imread()函數,正確表示格式爲

img=cv2.imread(文件名,顯示控制參數)

其中文件名很容易理解,就是你文件保存的路徑,不過必須是完整路徑,比如我的圖片在電腦上路徑就是C:\Users\LT010407\Desktop\1.jpg,參數就是指將該圖像以什麼類型讀入,常見有三種參數:
①cv2.IMREAD_UNCHANGED 指以原圖像讀入(不改變);
②cv2.IMREAD_GRAYSCALE 指用灰度圖像讀入;
③cv2.IMREAD_COLOR 指用彩色圖像讀入

注:如果不做任何改變讀入圖像,則後面的讀入參數可以省略,只需要給一個文件名即可。

示例:img=cv2.imread(r"C:\Users\LT010407\Desktop\1.jpg")

2.顯示圖像
Ⅰ.在opencv中顯示圖像用cv2.imshow()函數,正確表示格式爲:

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

其中窗口名由我們自己命名,圖像名即是我們需要顯示的圖像的名字。

示例:cv2.imshow(“image”,img)

Ⅱ.在顯示圖像時候,我們會遇到另一個函數cv2.waitKey(delay),正確表示格式爲:

waitKey(delay)

其中delay可以有三種形式:
①delay>0 等待delay毫秒;
②delay<0 等待鍵盤單擊;
③delay=0 無限等待

示例:cv2.waitKey(0)

Ⅲ.當顯示圖像的窗口打開後,我們需要關閉窗口,這時候就要用上我們的cv2.destroyAllWindows(),正確格式爲:

cv2.destroyAllWindows()

他的功能就是刪除所有窗口

3.保存圖像
在opencv中顯示圖像用cv2.imwrite()函數,正確表示格式爲

cv2.imwrite(文件地址,文件名)

其中文件地址容易理解,就是我們想要給這個顯示的圖像保存的地址,和讀入圖像的文件地址相同,文件名就是我們需要保存的圖像名字。

示例:cv2.imwrite(r"C:\Users\LT010407\Desktop\1_gray.jpg",img)
保存文件可以和讀入文件對比理解學習。

接下來就可以運行代碼看看成果了

代碼

在這裏插入圖片描述
結果是先讀入圖片,然後顯示圖片,然後再保存另一張一模一樣的該圖片,注意圖片窗口名稱即是我命名的那個“image”

三.關於圖片格式的小常識

我們剛剛已經輸出了我們人生中第一張通過計算機“克隆”的圖片,但是我們有沒有注意到圖片的後綴名有jpg,png等等,現在我就給大家普及一下這些後綴名分別代表什麼。

GIF格式:基於LZW算法的連續色調的無損壓縮格式,他支持256種色彩的圖像,但我們更多認識的是GIF動態圖,這就是把存於一個文件中的多幅圖像數據逐幅讀出並顯示到屏幕上,構成最簡單的動畫。

JPEG格式:文件後綴名爲“jpg”或“jpeg”,是最常用的圖像文件格式,一種有損壓縮格式,能夠將圖像壓縮在很小的儲存空間,圖像中重複或不重要的資料會被丟失,容易造成圖像數據的損傷。但是這種格式應用最廣泛,他文件尺寸較小,下載速度快在極高的壓縮率的同時還能展現豐富的圖像,換句話說,用最少的磁盤空間得到較好的圖像品質。

PNG格式:PNG能夠提供比GIF小30%的無損壓縮圖像文件,支持高級別無損耗壓縮,是網上接受的最新圖像文件格式,但正是因爲比較新,所有一些低級的瀏覽器或者程序可能不支持PNG文件。

PSD格式:一種非壓縮的原始文件保存格式,該格式文件有時候容量很大,可以保留所有原始信息。

我只是簡單的列舉出來了一些比較常見的文件格式,至於其他的格式,用到時候我會說明,小夥伴們也可以自己查詢百度瞭解一下。

這是本人第一篇博客,非常感謝小夥伴們能夠看到這兒,希望大家能夠學好opencv,共同進步!!!
(這是第一篇學習opencv的博客,也是我第一天學習opencv的心得,之後會不斷更新。轉載註明出處)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章