[AI][Python][機器學習]OpenCV讀取及顯示圖形

  • 23
  • 0
  • AI
  • 2025-05-08

文、意如

OpenCV 簡介

OpenCV(Open Source Computer Vision Library)是一個開源的電腦視覺與機器學習函式庫,

最初由 Intel 發起,目前由開源社群持續維護與發展。

它提供了超過 2500 個優化的演算法,涵蓋圖像處理、影像辨識、物體偵測、人臉辨識、影像追蹤等應用領域。

主要特色:
  • 跨平台支援:支援 Windows、Linux、macOS、Android、iOS。
  • 多語言支援:支援 C++、Python、Java 等程式語言。
  • 即時影像處理:適合即時應用,如監控、無人車、AR 等技術。
  • 輕量高速:演算法經過優化,能高效執行在嵌入式裝置或行動平台。
常見應用:
  • 人臉辨識系統(Face Detection & Recognition)
  • 車牌識別(LPR)
  • 手勢辨識與動作追蹤
  • 影像去雜訊與濾鏡效果
  • 工業視覺檢測(瑕疵品偵測)
常用指定:

cv2.imread(path, flag):讀取圖片。flag 為 1 表示彩色模式。

cv2.imshow(window_name, image):顯示圖片視窗。

cv2.imwrite(output_path, image):將圖片另存為新檔案。

cv2.waitKey(0):等待使用者按下任意鍵。

cv2.destroyAllWindows():關閉所有開啟的 OpenCV 視窗。

OpenCV讀取與顯示圖片

安裝指令→開啟Anaconda Prompt

pip install -v opencv-python==4.11.0.86

讀取彩色與灰階模式圖片

讀取圖片檔:media/img1.jpg

import cv2

# 讀取圖片,參數為 1 表示彩色模式(預設),0為灰階
myimage = cv2.imread("media/img1.jpg", 1)
#image = cv2.imread("media/img1.jpg", 0)


# 建立視窗,名稱為 "Color Image"
#cv2.namedWindow("Color Image")

# 建立視窗,名稱為 "Color Image",建立可調整大小的視窗
cv2.namedWindow("Color Image",cv2.WINDOW_NORMAL)

# 顯示圖片(視窗名稱,圖片變數)
cv2.imshow("Color Image", myimage)

# 等待按鍵(0 表示永遠等下去,直到使用者按下鍵盤)
cv2.waitKey(0)

# 關閉視窗
cv2.destroyAllWindows()

 

同時顯示兩張圖片(彩色、灰階)、設定視窗寬、高
import cv2

# 讀取兩張圖片,一張彩色,一張灰階
img_color = cv2.imread("media/img1.jpg", 1)
img_gray = cv2.imread("media/img1.jpg", 0)

# 設定寬與高
new_width = 200
new_height = 100

# 調整圖片大小
img_color_resized = cv2.resize(img_color, (new_width, new_height))
img_gray_resized = cv2.resize(img_gray, (new_width, new_height))

# 顯示彩色圖片
cv2.imshow("Color", img_color_resized)

# 顯示灰階圖片
cv2.imshow("Grayscale", img_gray_resized)

# 等待任意鍵後關閉視窗
cv2.waitKey(0)
cv2.destroyAllWindows()
讀取圖片失敗時顯示錯誤訊息

 

import cv2

# 嘗試讀取不存在的圖片
image = cv2.imread("media/does_not_exist.jpg", 1)

# 判斷是否讀取成功
if image is None:
    print("圖片讀取失敗,請檢查路徑是否正確")
else:
    cv2.imshow("Image", image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
另存新檔

IMWRITE_JPEG_QUALITY(JPEG 壓縮品質)

用法:cv2.imwrite('output.jpg', image, [cv2.IMWRITE_JPEG_QUALITY, 90])

功能:控制 JPEG 圖片的壓縮品質,範圍是 0 到 100,預設為 95。 數值越高,品質越好(但檔案越大)。

例如:90 是高品質;30 則壓縮很多但畫質明顯下降。


IMWRITE_WEBP_QUALITY(WebP 壓縮品質)是一種由 Google 推出的現代圖片格式,支援有損與無損壓縮,適合網頁應用。

用法:cv2.imwrite('output.webp', image, [cv2.IMWRITE_WEBP_QUALITY, 80])

功能:控制 WebP 格式圖片的品質,範圍為 0 到 100,預設是 100。


IMWRITE_PNG_COMPRESSION(PNG 壓縮等級)

用法:cv2.imwrite('output.png', image, [cv2.IMWRITE_PNG_COMPRESSION, 3])

功能:控制 PNG 壓縮等級,範圍是 0 到 9,預設為 3。

0 表示無壓縮,速度快但檔案大。9 表示最大壓縮,檔案小但儲存較慢。

讀取、顯示並儲存彩色與灰階圖片
import cv2

# 讀取彩色圖片 (1 表示彩色)
img_color = cv2.imread("media/img1.jpg", 1)

# 讀取同一張圖片為灰階 (0 表示灰階)
img_gray = cv2.imread("media/img1.jpg", 0)

# 顯示彩色與灰階圖片
cv2.imshow("Color Image", img_color)
cv2.imshow("Grayscale Image", img_gray)

# 儲存彩色圖片為 JPEG,品質 90
cv2.imwrite("output_color.jpg", img_color, [cv2.IMWRITE_JPEG_QUALITY, 90])

# 儲存灰階圖片為 PNG,壓縮等級 3
cv2.imwrite("output_gray.png", img_gray, [cv2.IMWRITE_PNG_COMPRESSION, 3])

# 儲存彩色圖片為 WebP,品質 80
cv2.imwrite("output_color.webp", img_color, [cv2.IMWRITE_WEBP_QUALITY, 80])

# 等待按鍵後關閉所有視窗
cv2.waitKey(0)
cv2.destroyAllWindows()

 

 

 

Yiru@Studio - 關於我 - 意如