綜合實驗-窗口顯示圖像¶
概要¶
本節講解了如何使用HighGUI顯示單張圖片,以及在多個窗口上顯示圖片
keywords 圖片 展示 窗口 顯示
綜合實驗1 - 單個窗口展示圖像¶
這里我們設計一個綜合實驗, 組合這節我們所學到的知識。
show-sigle-image.py
import numpy as np import cv2 # 導入一張圖像 模式為彩色圖片 img = cv2.imread('cat.jpg', cv2.IMREAD_COLOR) # 展示圖像 cv2.imshow('image',img) # 等待按鍵摁下 最多5s鐘 # 如果超時key_pressed 就會等于-1 key_pressed = cv2.waitKey(5000) print("有按鍵摁下或者已超時") # 使用chr() print("Key Pressed : {} == {}".format(key_pressed, chr(key_pressed))) # 關閉所有窗口 cv2.destroyAllWindows() # 或者是這樣, 銷毀創建的單個窗口 # cv2.destroyWindow('image')
展示效果
綜合實驗2 - 同時展示多個窗口¶
我們讀入小貓的圖片, 將其分別轉換為IMREAD_COLOR
與 IMREAD_UNCHANGED
這里稍稍講解一下IMREAD_UNCHANGED
, 我們普通的圖片BGR格式, 每個像素點的取值是從0-255, 用8bit的位去存儲像素點的值. 而市面上大多數SLR 相機, 可以支持更高的顏色分辨率(顏色深度 , depth) , 可以使用16-bit來存儲單個通道像素點的值(PNG圖片或者TIFF圖片)
同時將三者通過窗口展示.
源代碼 show-multiple-windows.py
import numpy as np import cv2 # 導入一張圖像 模式為彩色圖片 cv2.IMREAD_COLOR = 1 img_color = cv2.imread('cat.jpg', cv2.IMREAD_COLOR) # 導入一張圖片 模式為灰度圖 cv2.IMREAD_GRAYSCALE = 0 img_gray = cv2.imread('cat.jpg', cv2.IMREAD_GRAYSCALE) # 導入一張圖片 cv2.IMREAD_UNCHANGED = -1 包括 alpha透明度通道 img_alpha = cv2.imread('cat.jpg', cv2.IMREAD_UNCHANGED) # 創建一個名字叫做 image_color 的窗口 窗口可拉伸 cv2.namedWindow('image_color', cv2.WINDOW_NORMAL) # 在名字叫做 image_color 的窗口下展示圖像 cv2.imshow('image_color',img_color) cv2.namedWindow('image_grayscale', cv2.WINDOW_NORMAL) cv2.imshow('image_grayscale', img_gray) cv2.namedWindow('image_alpha', cv2.WINDOW_NORMAL) cv2.imshow('image_alpha', img_alpha) # 檢測按下的按鈕 print("請按 按鍵 e (exit)鍵關閉窗口") while True: key_pressed = cv2.waitKey(100) if key_pressed >= 0: # 打印一下按鍵記錄 print("Key Pressed : {} == {}".format(key_pressed, chr(key_pressed))) # 匹配為e后 跳出 while循環 if key_pressed == ord('e'): break # 關閉所有打開的窗口 cv2.destroyAllWindows()
OUTPUT
''' 輸出 請按 按鍵 e (exit)鍵關閉窗口 Key Pressed : 101 == e '''
展示效果