[OpenCV基礎][Python]影像操作(讀取、顯示、保存、裁剪、旋轉、縮放)

更新於 2024/01/29閱讀時間約 5 分鐘

本文將介紹影像基本操作包括:影像的讀取顯示保存,以及一些常見的操作裁剪旋轉縮放等。

語法介紹

讀取影像:

cv2.imread函數的參數是影像的檔案路徑。讀取後的影像以NumPyndarray形式表示。

支援多種常見影像格式:JPEG (.jpg, .jpeg),PNG (.png),BMP (.bmp),TIFF (.tiff, .tif)等

import cv2

# 讀取影像
image = cv2.imread('image.jpg')

顯示影像:

使用 cv2.imshow() 函數可以顯示影像。這通常與 cv2.waitKey()cv2.destroyAllWindows() 一同使用。

在使用 cv2.imshow() 顯示影像後,如果沒有 cv2.waitKey(),視窗會立即關閉。然而,如果使用 cv2.waitKey(0),它會等待直到任意鍵被按下,這樣你就有足夠的時間來觀察和檢查影像。

當你按下任意鍵之後,cv2.waitKey(0) 返回按鍵的ASCII值,然後程式繼續執行。

接下來,使用 cv2.destroyAllWindows() 來關閉所有OpenCV的視窗。

# 顯示影像
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

保存圖像:

# 保存影像
cv2.imwrite('path/to/save/image.jpg', image)

cv2.imwrite: 函數的參數為保存的檔案路徑和要保存的影像

'path/to/save/image.jpg': 這是指定要保存影像的檔案路徑,這裡假設檔案名稱image.jpg


裁剪影像:

這是使用NumPy切片(slicing)和索引(indexing)的方式來取出一部分影像。

# 裁剪影像的一部分
cropped_image = image[y_start:y_end, x_start:x_end]

y_starty_end垂直方向的起始和結束索引。

x_startx_end水平方向的起始和結束索引。


旋轉影像:

這是一個比較簡單的旋轉函式,但只能指定三個角度,若要其他角度就需使用cv2.warpAffine可參考另外一篇文章有詳細介紹[OpenCV基礎][Python]遮罩,旋轉,輪廓應用濾除斑點

import cv2

# 旋轉影像
angle = '90'
Rotate_list = {'90': 0, '180': 1, '270': 2}
Rotate_angle = Rotate_list.get(angle)

# 假設你已經有了一個讀取的影像 image
rotated_image = cv2.rotate(image, Rotate_angle)

縮放影像:

# 縮放影像
scaled_image = cv2.resize(image, (new_width, new_height))

new_widthnew_height 是新的寬度和高度。


程式實作範例_1

結合使用使用讀取,顯示,旋轉,保存圖像。

當使用 cv2.imwrite() 函數保存影像時,如果未指定完整的檔案路徑,則保存的位置將相對於當前工作目錄(current working directory,通常是執行程式的目錄)。

import cv2

# 讀取影像
image = cv2.imread('cat.jpg')

# 旋轉影像
angle = '90'
Rotate_list = {'90': 0, '180': 1, '270': 2}
Rotate_angle = Rotate_list.get(angle)

# 假設你已經有了一個讀取的影像 image
rotated_image = cv2.rotate(image, Rotate_angle)

# 顯示影像
cv2.imshow('Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 保存影像
cv2.imwrite('rotated_image_cat.jpg', rotated_image)
旋轉後的圖

旋轉後的圖

保存後路徑

保存後路徑


程式實作範例_2

結合縮放,左邊為原圖,右邊為縮放後的圖。

import cv2

# 讀取影像
image = cv2.imread('cat.jpg')

# 縮放 50 * 100

scaled_image = cv2.resize(image, (50, 100))

# 顯示影像
cv2.imshow('Image', scaled_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 保存影像
cv2.imwrite('scaled_image_cat.jpg', scaled_image)
縮放比較圖

縮放比較圖



歡迎加入我的沙龍,及追蹤,將持續更新跟OpenCV相關的內容喔~








avatar-img
128會員
209內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和影像處理庫,它提供了豐富的功能和工具,可用於開發各種視覺應用程式。 OpenCV最初是用C++編寫的,但它也提供了Python、Java等多種程式語言的接口,方便不同語言的開發者使用。
[影像處理_OpenCV Python]使用Python撰寫影像處理功能,圖片遮罩或濾除掉不要的地方,旋轉圖片 以下範例將呈現影像處理三種不同的應用: 遮罩的實現 濾除 旋轉
OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和影像處理庫,它提供了豐富的功能和工具,可用於開發各種視覺應用程式。 OpenCV最初是用C++編寫的,但它也提供了Python、Java等多種程式語言的接口,方便不同語言的開發者使用。
[影像處理_OpenCV Python]使用Python撰寫影像處理功能,圖片遮罩或濾除掉不要的地方,旋轉圖片 以下範例將呈現影像處理三種不同的應用: 遮罩的實現 濾除 旋轉
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Thumbnail
#安裝 OpenCV 相關套件 pip install opencv-python pip install opencv-contrib-python pip install matplotlib
Haar Cascade classifier OpenCV 官方 Github:https://github.com/opencv/opencv/tree/4.x/data 人臉特徵模型:haarcascade_frontalface_default.xml 資料來源: https://steam
Thumbnail
OpenCV 讀取圖片 原碼:https://reurl.cc/3354ZL 成果: OpenCV 本身有提供讀取圖檔的函數可用,讀取圖檔,只要呼叫 cv2.imread 即可將圖片讀取進來,以 cv2.imread 讀進來的資料,會儲存成一個 NumPy 的陣列。 將圖片讀取進來之後,可使用 c
opencv is use BGR color matplotlib is use RGB color 顯示圖片 opencv matplotlib
Thumbnail
初稿 作者: Stan Ht. Wu (stanwu 吳信典) 想像一下,如果整台電腦裝瀏覽器就好了?這樣多輕鬆啊!人生就是要斷捨離,什麼都不裝,就用瀏覽器就好了,您看連寫方格子的文章也是直接用瀏覽器耶!! 用瀏覽器基本上是最符合懶人原則,為什麼呢?因為從頭到尾根本不需要切換應用程式,存檔案放在雲端
Thumbnail
OpenCart 官方的 3.0.3.7 版於上周釋出,除了修正許多 3.0.x 版累積的小問題,也更新了 twig 套件解決了 PHP 7.4 的相容問題,所以 OpenCart 台灣電商技術團隊,也以 OpenCart 3.0.3.7 版為基礎,加上了在地優化及實用模組,推出台灣優化版。
Thumbnail
綠界科技雖然為 OpenCart 電商系統推出了可直接安裝使用的金流擴充模組,但其設計的模組架構,並不算完全符合 OpenCart 金流模組的架構規則,包含後臺編輯不同付款方式時的設定,無法獨立分開設定,前台的金流選擇,更是被設計成兩段式的模式,非常不符合台灣消費者慣用的習性。
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Thumbnail
#安裝 OpenCV 相關套件 pip install opencv-python pip install opencv-contrib-python pip install matplotlib
Haar Cascade classifier OpenCV 官方 Github:https://github.com/opencv/opencv/tree/4.x/data 人臉特徵模型:haarcascade_frontalface_default.xml 資料來源: https://steam
Thumbnail
OpenCV 讀取圖片 原碼:https://reurl.cc/3354ZL 成果: OpenCV 本身有提供讀取圖檔的函數可用,讀取圖檔,只要呼叫 cv2.imread 即可將圖片讀取進來,以 cv2.imread 讀進來的資料,會儲存成一個 NumPy 的陣列。 將圖片讀取進來之後,可使用 c
opencv is use BGR color matplotlib is use RGB color 顯示圖片 opencv matplotlib
Thumbnail
初稿 作者: Stan Ht. Wu (stanwu 吳信典) 想像一下,如果整台電腦裝瀏覽器就好了?這樣多輕鬆啊!人生就是要斷捨離,什麼都不裝,就用瀏覽器就好了,您看連寫方格子的文章也是直接用瀏覽器耶!! 用瀏覽器基本上是最符合懶人原則,為什麼呢?因為從頭到尾根本不需要切換應用程式,存檔案放在雲端
Thumbnail
OpenCart 官方的 3.0.3.7 版於上周釋出,除了修正許多 3.0.x 版累積的小問題,也更新了 twig 套件解決了 PHP 7.4 的相容問題,所以 OpenCart 台灣電商技術團隊,也以 OpenCart 3.0.3.7 版為基礎,加上了在地優化及實用模組,推出台灣優化版。
Thumbnail
綠界科技雖然為 OpenCart 電商系統推出了可直接安裝使用的金流擴充模組,但其設計的模組架構,並不算完全符合 OpenCart 金流模組的架構規則,包含後臺編輯不同付款方式時的設定,無法獨立分開設定,前台的金流選擇,更是被設計成兩段式的模式,非常不符合台灣消費者慣用的習性。