python+OpenCV筆記(1)——圖像視頻的解釋、讀取、顯示、保存以及截取部分圖像


python+OpenCV的圖像基本操作

 

一、計算機如何識別圖像

不知道大家有沒有感覺,有時在手機上看到的圖片有很多小點,圖像不夠清晰;或者把圖片放大,你會發現越放大,也會看到很多小點。

我們先看一張彩色圖像,這是一張路飛的圖片:

 

原因是:

一張出現在屏幕上的圖片是由無數個像素點組成的,分辨率越高,圖片越不清晰,分辨率越低,圖片越清晰。

無數個小點放在同一個平面上機會組成一幅我們所看到的圖像。

計算機十九通過這些像素點來識別不同的圖像,像素點的值在0到255之間。像素點越大,圖片就越亮;像素點越小,圖片就越暗。

如何識別彩色和黑色圖片:

一張彩色的圖片是有顏色通道的,由紅色(R)、綠色(G)、藍色(B)組成。

所以一張黑白圖是沒有顏色通道的。

 

二、圖片的讀取與顯示

1 #所需要的庫
2 import cv2 as cv 3 import matplotlib.pyplot as plt
1 #讀取圖片cv2.imread("圖片路徑")
2 img=cv.imread('lufei.jpg')
1 #圖像的顯示 cv2.imshow(圖片展示窗口的名字,設置的讀取的圖像的參數)
2 cv.imshow("image",img) 3 #等待時間,以毫秒為單位,若將代碼中的0改為1000,圖像顯示1s就會自動退出窗口
4 # 0代表任意鍵退出窗口
5 cv.waitKey(0) 6 cv.destroyAllWindows()

代碼中寫有詳細解釋,請仔細閱讀

運行代碼出來的結果:

 

若需要寫很多圖像的項目時,可將顯示的代碼放在一個函數中,便於調用:

 

1 def cv_show(name,img): 2  cv.imshow(name,img) 3  cv.waitKey(0) 4     cv.destroyAllWindows()

 三、視頻的讀取與顯示

視頻是由一張一張圖片組成的,所以讀取視頻就相當於讀取很多張圖片,然后將其連起來

cv2.VideoCapture可以捕獲攝像頭,用數字控制不同的設備,如果是視頻文件,直接寫好視頻路徑就好。

1 #讀取視頻文件
2 video=cv.VideoCapture("iu1.mp4")
1 #判斷是否成功讀取
2 if video.isOpened():
3     open,frame=video.read()
4 else:
5     open=False
 1 #利用while循環一幀一幀的對視頻進行讀取
 2 while open:
 3     ret,frame=video.read()
 4     if frame is None:
 5         break
 6     if ret ==True:
 7         #轉換每一幀的顏色,這里是將每一幀裝為灰度圖
 8         gray=cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
 9         cv.imshow("iu1new.mp4",gray)
10         #每一幀等待時間
11         if cv.waitKey(10)  %0xFF==27:
12             break
13 video.release()
14 cv.destroyAllWindows()

運行結果就不展示出來了,大家可以找一個視頻去運行代碼試試。

 四、部分圖像的截取

cv_show()函數是自己編寫用於顯示圖片的函數,代碼已經放在第一部分了。

img[h,w]表示圖像的高度和寬度。

1 img=cv.imread("lufei.jpg")
2 lufei=img[0:200,0:200]
3 cv_show("lufei",lufei)

 

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM