1.準備作業
沒學過Python...
我先參考了牛客網的Python教程:https://www.nowcoder.com/tutorial/10005/dc2c82d6557548beb0e2252869be13d8(沒看多少,不會再回來查)
首先裝了個python https://www.python.org/
然后再cmd下輸入 pip install opencv-python
還裝了個IDE PyCharm
2.讀取和顯示一張圖片
import cv2 as cv img = cv.imread("1.png")#讀取圖片 這里1.png和python檔案在同一目錄下 cv.imshow("1",img)#顯示圖片 ""里面是視窗的名稱
3.查閱的函式資料
imread函式
imread為image read的縮寫,即影像讀取的意思
【函式原型】cv2.imread(path_of_image, intflag)
引數1:需要讀入影像的路徑
引數2:標志以什么形式讀入影像,可以選擇一下方式:
cv2.IMREAD_COLOR【1】: 加載彩色影像,任何影像的透明度都將被忽略,它是默認標志
cv2.IMREAD_GRAYSCALE【0】: 以灰度模式加載影像
cv2.IMREAD_UNCHANGED【-1】: 保留讀取圖片原有的顏色通道
inshow函式
【函式原型】cv2.imshow(windows_name, image)
引數1: 視窗名稱(字串)
引數2: 影像物件,型別是numpy中的ndarray型別,注:這里可以通過imutils模塊改變影像顯示大小
cvNamedWindow函式
該函式為開放計算機視覺(OpenCV)庫庫函式,用來創建視窗顯示影像
cv2.namedWindow(‘視窗標題’,默認引數)
視窗大小可以改變:cv2.namedWindow("image",cv2.WINDOW_NORMAL) 或者 cv2.namedWindow('image',cv2.WINDOW_GUI_NORMAL)
視窗大小不可以改變:cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
視窗大小自適應比例:cv2.namedWindow("image",cv2.WINDOW_FREERATIO)
視窗大小保持比例:cv2.namedWindow("image",cv2.WINDOW_KEEPRATIO)
顯示色彩變成暗色:cv2.namedWindow('image',cv2.WINDOW_GUI_EXPANDED)
cv2.imshow(‘視窗標題’,image),如果前面沒有cv2.namedWindow,就自動先執行一個cv2.namedWindow()
關閉特定視窗:void destroyWindow(const string& winname)
關閉所有HighGUI視窗:void destroyAllWindows()
cvwaitKey函式
函式的功能是不斷重繪影像,頻率時間為delay,單位為ms
它顯示指定的影像,毫秒,否則,它就不會顯示影像,例如,waitKey(0)將無限地顯示視窗,直到任何按鍵按下(它適合于影像顯示)
waitKey(25)將顯示一個框架,25毫秒后,顯示將自動關閉 (如果把它放到一個回圈中去讀視頻,它將顯示視頻幀逐幀)
1.waitKey()與waitKey(0),都代表無限等待,waitKey函式的默認引數就是int delay = 0,故這倆形式本質是一樣的,
2.waitKey(n),等待n毫秒后,關閉顯示的視窗,
cvCvtColor是Opencv里的顏色空間轉換函式
4.代碼
1 import cv2 as cv 2 import numpy as np 3 4 5 def get_image_info(image): 6 print(type(image)) 7 print(image.shape) 8 print(image.size) # 高、寬、通道數 9 print(image.dtype) # 位元組位數占多數 高*寬*通道數 10 pixel_data =https://www.cnblogs.com/xq-g/p/ np.array(image) 11 print(pixel_data) 12 13 14 def video_demo(): 15 capture = cv.VideoCapture(0) # 既支持視頻檔案的讀取,也支持從攝像機中視頻的讀取 16 while True: 17 ret, frame = capture.read() 18 # ret是布林值,如果讀取幀是正確的則回傳True,如果檔案讀取到結尾,它的回傳值就為False,后面的frame該幀影像的三維矩陣BGR形式 19 # frame = cv.flip(frame, 1) #左右鏡像 20 cv.namedWindow("video", cv.WINDOW_AUTOSIZE) 21 cv.imshow("video", frame) 22 c = cv.waitKey(50) # 如果50ms內有按鍵 有回傳按鍵的ASCII碼值 23 if c == 27: # ESC鍵的ASCII碼十進制表示為27 24 break 25 26 27 src = https://www.cnblogs.com/xq-g/p/cv.imread("1.png") 28 cv.namedWindow("image", cv.WINDOW_NORMAL) 29 cv.imshow("image", src) # 顯示讀進來的圖片 30 get_image_info(src) 31 gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) 32 cv.imwrite("1_gray.png", gray) # 保存修改后的圖片 33 video_demo() 34 cv.waitKey(0) 35 cv.destroyAllWindows()
5.效果
顯示的圖片

視窗大小是可改變的


圖片在計算機看來是一個結構化存盤的資料資訊
影像屬性:通道數目、高和寬、像素資料、影像型別

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/150706.html
標籤:Python
下一篇:strip()的正則運算式版本
