<button id="ssm6u"><optgroup id="ssm6u"></optgroup></button>
  • 跳轉至

    綜合實驗-窗口顯示圖像

    概要

    本節講解了如何使用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')
    

    展示效果

    Screenshot_20180120_231849.png

    綜合實驗2 - 同時展示多個窗口

    我們讀入小貓的圖片, 將其分別轉換為IMREAD_COLORIMREAD_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
    '''
    

    展示效果

    Screenshot_20171211_183750.png


    韩国精品无码一区二区三区,精品无码一区二区三区AV,欧洲丰满美熟女乱又伦AV,亚洲午夜久久久影院伊人