python-opencv:讀取圖片


代碼

import cv2

# 讀取一張圖片
src = cv2.imread("../images/lena.jpg")
# 命名一個窗口
cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)
# 顯示一張圖片
cv2.imshow("input image", src)
# 等待鍵盤按鍵
cv2.waitKey(0)
# 銷毀所有窗口
cv2.destroyAllWindows()

imread 函數

使用函數 cv2.imread() 讀入圖像。這幅圖像應該在此程序的工作路徑,或者給函數提供完整路徑,作為第一個參數

第二個參數是要告訴函數應該如何讀取這幅圖片:

  • cv2.IMREAD_COLOR:讀入一副彩色圖像。圖像的透明度會被忽略,這是默認參數
  • cv2.IMREAD_GRAYSCALE:以灰度模式讀入圖像
  • cv2.IMREAD_UNCHANGED:讀入一幅圖像,並且包括圖像的 alpha 通道

注意:就算圖像的路徑是錯的, OpenCV 也不會提醒你的,但是當你使用命令print img時得到的結果是None。

顯示圖片

使用函數 cv2.imshow() 顯示圖像。窗口會自動調整為圖像大小。
第一個參數是窗口的名字,其次才是我們的圖像。
你可以創建多個窗口,只要你喜歡,但是必須給他們不同的名字

waitKey

cv2.waitKey() 是一個鍵盤綁定函數。需要指出的是它的時間尺度是毫秒級。
函數等待特定的幾毫秒,看是否有鍵盤輸入。
特定的幾毫秒之內,如果按下任意鍵,這個函數會返回按鍵的 ASCII 碼值,程序將會繼續運行。
如果沒有鍵盤輸入,返回值為 -1,如果我們設置這個函數的參數為 0,那它將會無限期的等待鍵盤輸入。
它也可以被用來檢測特定鍵是否被按下,例如按鍵 a 是否被按下

警告:如果你用的是 64 位系統,你需要將 k = cv2.waitKey(0) 這行改成 k = cv2.waitKey(0) & 0xFF

銷毀窗口

cv2.destroyAllWindows() 可以輕易刪除任何我們建立的窗口。
如果你想刪除特定的窗口可以使用 cv2.destroyWindow(),在括號內輸入你想刪除的窗口名

一種特殊的情況是,你也可以先創建一個窗口,之后再加載圖像。這種情況下,你可以決定窗口是否可以調整大小。使用到的函數是 cv2.namedWindow()。初始設定函數標簽是 cv2.WINDOW_AUTOSIZE。但是如果你把標簽改成cv2.WINDOW_NORMAL, 你就可以調整窗口大小了。當圖像維度太大,或者要添加軌跡條時,調整窗口大小將會很有用

matplotlib 顯示圖像

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('messi5.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()
注意: 彩色圖像使用 OpenCV 加載時是 BGR 模式。
但是 Matplotib 是 RGB模式。所以彩色圖像如果已經被 OpenCV 讀取,那它將不會被 Matplotib 正確顯示。


免責聲明!

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



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