博客 / 詳情

返回

『OpenCV-Python』安裝以及圖像的讀取、顯示、保存

點贊 + 關注 + 收藏 = 學會了

OpenCV 是一個開源的計算機視覺庫,廣泛應用於圖像處理、機器學習和實時計算機視覺應用。比如圖像和視頻的濾鏡和降噪、物體檢測、人臉識別、證件號識別、車牌識別等應用。當然,也有其他工具可以對這些領域做支持,但本專欄是介紹 OpenCV 的,所以只講 OpenCV 的好話。

OpenCV 對「數字圖像」提供了很多種功能函數,圖像是由像素組成,而每個像素包含了顏色、亮度、飽和度等信息,這些信息在計算機中都是以數據的方式保存(通常是各種類型的數字),OpenCV 很擅長操作和處理這些數據。

在處理這些數據之前需要先有數據。本文作為 「OpenCV-Python 專欄」的門口篇,將介紹如何安裝 OpenCV 以及如何讀取、顯示、保存圖片。

OpenCV 支持多種編程語言,如 Python、C++ 等,它還對 JavaScript 做了支持。

本專欄講解 OpenCV Python 版本的用法,之後有機會可能還會講解 JavaScript 版本的用法及應用。

  • OpenCV官網:https://opencv.org/
  • OpenCV Python 官方文檔:https://docs.opencv.org/4.1.2/d6/d00/tutorial_py_root.html

安裝並引入

安裝

在開始使用 OpenCV 前,需要安裝好 Python 環境。可參考 Python 快速入門篇

然後安裝 OpenCV。

pip install opencv-python

安裝成功後可以用 python -c "import cv2; print(cv2.__version__)" 驗證安裝是否成功。如果輸出了 OpenCV 的版本號就證明安裝成功了。

01.png

引入

創建一個項目目錄,在裏面創建一個 main.py 文件,打開該文件,寫入以下代碼就可以引入 OpenCV 了。

import cv2

讀取圖片

讀取圖片是圖像處理的第一步。在 OpenCV 中,cv2.imread() 函數用於讀取圖像文件。

import cv2

# 讀取圖片
image = cv2.imread('example.png')

上面的代碼,使用 cv2.imread() 讀取了一張圖片,並將該圖片存在 image 變量裏。

cv2.imread() 接收2個參數:

  • 參數1: 本地圖片的文件路徑。不能直接讀取網絡上的圖片。要讀取網絡圖片,可以使用 requests 庫下載圖片並將其轉換為 OpenCV 能識別的格式。
  • 參數2:圖片讀取的模式,支持以下參數。

    • cv2.IMREAD_COLOR:以彩色圖像讀取,忽略透明度(默認)。
    • cv2.IMREAD_GRAYSCALE:以灰度圖像讀取。
    • cv2.IMREAD_UNCHANGED:讀取包含透明通道的圖像。

顯示圖片

Python 不像 JS 那樣可以直接在瀏覽器運行,用 JS 版的 OpenCV 可以直接將圖片渲染到瀏覽器頁面裏,而 Python 版需要使用 cv2.imshow() 方法創建一個窗口,然後把圖片丟進去顯示,並且需要通過 cv2.waitKey() 方法讓窗口保持打開狀態。

# 顯示圖片
cv2.imshow('Image', image)

# 等待用户按任意鍵關閉窗口
cv2.waitKey(0)

# 關閉所有窗口釋放資源
cv2.destroyAllWindows()

02.png

cv2.imshow() 函數的兩個參數:

  • 參數1:是窗口名稱。
  • 參數2:是要顯示的圖像。

「窗口名稱」值得是這個圖片窗口的名稱,在上圖中圖片頂部的狀態欄裏有顯示這個名字。

在 OpenCV 中,一個窗口能展示一個圖片,如果將多個圖片有序的放進同一個窗口就會形成動畫,之後介紹視頻的時候會提到這點。

只使用 cv2.imshow() 展示圖片只能保留一瞬間的展示時間,如果想長時間維持展示狀態可以使用 cv2.waitKey(0) 讓程序停止下來,這樣就不會關掉圖片窗口了。

cv2.waitKey() 會等待並返回用户按下鍵盤上的任意鍵,窗口才會繼續運行或關閉。參數 0 表示無限等待,直到用户按下鍵盤任意鍵才會繼續執行代碼。你也可以傳入其他數值,比如傳入 30 表示等待 30毫米 才執行下一步操作。

最後執行 cv2.destroyAllWindows() 關閉所有窗口,釋放資源。

OpenCV 的操作對象是圖片,以後學到更高階的方法時經常需要使用 cv2.imshow() 將圖片輸出來看看,這其實有點像我們在控制枱查看日誌的功能。所以 cv2.imshow() 方法一定要記住。

保存圖片

在圖像處理結束後(比如修改圖片尺寸、加個濾鏡等操作,後面的文章會講到),可以使用 cv2.imwrite() 將處理結果保存為文件。

# 保存圖片
cv2.imwrite('output.jpg', image)

cv2.imwrite() 函數接受兩個參數:

  • 參數1:保存的文件路徑。
  • 參數2:要保存的圖像數據。

以上就是本文的全部內容了,雖然還沒講到 OpenCV 的重點,但這幾個方法在之後會經常用到。要記住了。

點贊 + 關注 + 收藏 = 學會了

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.