无线电爱好网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

Python OpenCV 影像處理:讀取、顯示、儲存圖片

2024-3-12 08:59| 发布者: 闪电| 查看: 2| 评论: 0

摘要: ►前言本篇將對於OpenCV Python進行介紹,透過程式碼進行OpenCV Python圖像與影片的讀取、顯示、儲存實作,使大家了解OpenCV於影像的操作。►OpenCV安裝使用以下指令在終端機(terminal)或命令提示字元(cmd)中安裝套 ...

► 前言

本篇將對於OpenCV Python進行介紹,透過程式碼進行OpenCV Python圖像與影片的讀取、顯示、儲存實作,使大家了解OpenCV於影像的操作。

 OpenCV 安裝

使用以下指令在終端機(terminal)或命令提示字元(cmd)中安裝套件。

pip install opencv-python


► OpenCV
 讀取與顯示圖片

OpenCV使用以下函數(cv2.imread)來讀取圖像。如果讀取圖像成功將會返回一個NumPy數組,如果獲取失敗將返回None。

cv2.imread讀取圖片參數,其中file_path為讀取圖片路徑,flags為讀取模式,flags默認使用cv.IMREAD_COLOR(加載彩色圖像)。


cv2.imread 具體參數,如下圖。



常見使用flags有三種:

cv.IMREAD_COLOR

加載彩色圖像。任何圖像的透明度都會被忽視。默認設置。

cv.IMREAD_GRAYSCALE

以灰度模式加載圖像。

cv.IMREAD_UNCHANGED

加載圖像,包括alpha通道。


範例程式,讀取彩色圖像與灰色圖像。

# 讀取圖像,默認選擇彩色圖像
image = cv2.imread('image.jpg')
# 讀取圖像,選擇灰色圖像
image_gray = cv2.imread('image.jpg', 0)

OpenCV使用以下函數(cv2.imshow)來顯示圖片。cv2.imshow顯示圖片參數,其中 “windows”是圖像顯示的視窗名稱,image為顯示圖像。


將上面程式結合就可以進行圖片讀取與顯示。其中cv2.waitKey為等待按鍵輸入,再透過cv2.destroyAllWindows()函數來關閉所有視窗。

#!/usr/bin/env python3

# -*- coding: utf-8 -*-
import cv2
# 讀取圖像,默認選擇彩色圖像
image = cv2.imread('image.jpg')
# 讀取圖像,選擇灰色圖像
image_gray = cv2.imread('image.jpg', 0)
# 確保圖像成功讀取
if image is None:
print('無法讀取彩色圖像檔案')
exit()
# 確保圖像成功讀取
if image_gray is None:
print('無法讀取灰階圖像檔案')
exit()
# 顯示圖像
cv2.imshow('windows', image)
cv2.imshow('windows_gray', image_gray)

# 等待按下任意鍵後關閉視窗
cv2.waitKey(0)
cv2.destroyAllWindows()



► OpenCV 儲存圖像

OpenCV使用以下函數(cv2.imwrite)來儲存圖像。cv2. imwrite儲存圖像參數,其中cv2.imwrite 可透過圖片的副檔名來指定輸出的圖像格式,image為儲存圖像。

最後將上面的範例組合,就可以透過OpenCV進行圖像的讀取、顯示與儲存。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cv2
# 讀取圖像,默認選擇彩色圖像
image = cv2.imread('image.jpg')

# 確保圖像成功讀取
if image is None:
print('無法讀取彩色圖像檔案')
exit()

# 顯示圖像
cv2.imshow('windows', image)

# 將圖像儲存為新的圖像檔案(jpg格式)
cv2.imwrite("image.jpg", image)

# 等待按下任意鍵後關閉視窗
cv2.waitKey(0)
cv2.destroyAllWindows()


► 
Q&A

 問題一:為甚麼讀取圖像錯誤?

在讀取圖像時,如果指定的圖像路徑不正確,將無法讀取圖像。因此,要確保提供正確的路徑和檔案名稱。建議採用全英文路徑進行讀取。
問題二:彩色轉換問題

在讀取和顯示圖像時,可能會遇到顏色的不一致。這是由於 OpenCV 默認使用 BGR(藍色、綠色、紅色)通道順序,
而其他工具可能使用 RGB(紅色、綠色、藍色)通道順序。因此,需要注意轉換通道順序以確保正確的顯示。
問題三:圖像顯示視窗無響應

在顯示圖像後,視窗可能無響應或凍結,無法關閉。這可能是由於視窗受阻塞或程式停留在 cv2.waitKey() 函數中造成的。
可以嘗試添加適當的 cv2.waitKey() 或使用 cv2.waitKey(1) 在每個迴圈中確保視窗能夠正常響應。
問題四:影像格式不支援

有時候,可能會遇到無法讀取或儲存特定格式的圖像的問題。這可能是由於 OpenCV 版本或編譯配置不支援該圖像格式所致。
在處理圖像前,確保 OpenCV 支援所需的圖像格式。
問題五:圖像品質問題

在儲存圖像時,可能會遇到圖像品質的降低或失真。這可能是由於壓縮參數的設置不正確,例如使用 cv2.imwrite() 函數時,
未指定正確的 JPEG 壓縮品質參數。要確保使用適當的參數設置,以維持圖像的高品質。


小結

透過以上講解,搭配程式碼進行範例講解與Q&A進行問題解惑,相信各位對於OpenCV讀取、顯示與儲存圖像能有更深刻的理解,期待下一篇博文吧!


路过

雷人

握手

鲜花

鸡蛋

QQ|关于本站|小黑屋|Archiver|手机版|无线电爱好网 ( 粤ICP备15040352号 ) 无线电爱好技术交流5 无线电爱好技术交流1无线电爱好技术交流9开关电源讨论群LED照明应用、电源无线电爱好技术交流4无线电爱好技术交流8无线电爱好技术交流10无线电爱好技术交流11

粤公网安备 44030702001224号

GMT+8, 2024-3-13 09:22 , Processed in 0.109200 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

返回顶部