上次咱們測試了搭建的開發環境,如今咱們詳細講一下,怎麼讀取圖片並顯示出來以及圖片的保存和攝像頭的調用python
計算機「看到」的圖像實際上是一個一個像素點構成的,每一個像素點都有對應的數值。 因此圖像時結構化存儲的數據信息。chrome
下面經過代碼來獲取圖像的詳細信息,包括圖像的形狀、類型、大小、數據類型和像素值。
下面是獲取圖像信息的函數:數組
def get_image_info(image): print("圖像的類型:", type(image)) print("圖像的形狀:", image.shape) print("圖像的大小:", image.size) print("圖像的數據類型:", image.dtype) pixel_data = np.array(image) print("圖像的像素值:", pixel_data)
完整代碼:ide
import cv2 as cv import numpy as np def get_image_info(image): print("圖像的類型:", type(image)) print("圖像的形狀:", image.shape) print("圖像的大小:", image.size) print("圖像的數據類型:", image.dtype) pixel_data = np.array(image) print("圖像的像素值:", pixel_data) print("----------hello python----------") src = cv.imread("E:/image.jpg") # 讀取圖像,注意使用本身圖像的路徑 get_image_info(src) # 獲取傳入圖像的詳細信息 cv.waitKey(0) # 等待鍵盤輸入,目的是讓程序停在這裏不立刻關閉 cv.destroyAllWindows() # 銷燬該程序下的全部窗口
下面是我測試獲得的結果: 函數
從運行的結果能夠看出,這個圖像的類型是numpy.ndarray,這是python中numpy庫裏面的多維數組, 圖像形狀是(613, 573, 3),說明圖像的高度是613,寬度是573,通道數是3。圖像的大小是1053747,這個數據是由以前的圖像形狀計算而來,6135733=1053747,由1053747個像素組成。圖像的數據是uint8格式的,每一個像素點所佔的大小是無符號8位的。圖像的像素值在圖中能夠看到是有許多0到255之間的數構成的三維數組。測試
攝像頭代碼:ui
def video_demo(): capture = cv.VideoCapture(0) # 打開攝像頭設備,參數爲0表示使用第一個設備,若是有多個設備能夠修改參數,選擇使用的設備 while True: ret, frame = capture.read() # ret表示返回的信息,frame表示視頻中的每一幀 frame = cv.flip(frame, 1) """ 翻轉 0:沿X軸翻轉(垂直翻轉) 大於0:沿Y軸翻轉(水平翻轉) 小於0:先沿X軸翻轉,再沿Y軸翻轉,等價於旋轉180° 若是不加這一句代碼,攝像頭顯示的畫面是相反的,能夠試一試效果 """ cv.imshow("video", frame) # 使用一個窗口來顯示攝像頭的內容 c = cv.waitKey(50) # 等待50毫秒 if c == 27: # 27對應ASCII中的ESC,若是鍵盤輸入ESC鍵,則會退出整個循環 break
完整代碼:3d
import cv2 as cv import numpy as np def video_demo(): capture = cv.VideoCapture(0) # 打開攝像頭設備,參數爲0表示使用第一個設備,若是有多個設備能夠修改參數,選擇使用的設備 while True: ret, frame = capture.read() # ret表示返回的信息,frame表示視頻中的每一幀 frame = cv.flip(frame, 1) """ 翻轉 0:沿X軸翻轉(垂直翻轉) 大於0:沿Y軸翻轉(水平翻轉) 小於0:先沿X軸翻轉,再沿Y軸翻轉,等價於旋轉180° 若是不加這一句代碼,攝像頭顯示的畫面是相反的,能夠試一試效果 """ cv.imshow("video", frame) # 使用一個窗口來顯示攝像頭的內容 c = cv.waitKey(50) # 等待50毫秒 if c == 27: # 27對應ASCII中的ESC,若是鍵盤輸入ESC鍵,則會退出整個循環 break print("----------hello python----------") video_demo() cv.waitKey(0) cv.destroyAllWindows()
測試結果:code
能夠按ESC鍵以後,按0鍵結束程序,或者直接點擊pycharm中的紅色中止按鈕中止程序。視頻
保存圖片的操做很簡單,只需幾行代碼
print("----------hello python----------") src = cv.imread("E:/image.jpg") cv.imshow("input image", src) gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) # 轉化爲灰色 cv.imwrite("E:/image1.jpg", gray) # 保存圖片 cv.waitKey(0) cv.destroyAllWindows()
保存的圖片在E盤的根目錄下 效果以下: