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

更新於 發佈於 閱讀時間約 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
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
147會員
258內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
螃蟹_crab的沙龍的其他內容
2025/02/15
在電腦視覺應用中,輪廓(Contour)常用來描述物體的邊界。 當圖像中有雜訊或物體邊緣過於複雜時,我們可以利用輪廓逼近技術,將輪廓簡化成較少點數的多邊形,這不僅有助於後續的形狀分析,也能提高處理速度。 本文將介紹如何使用 OpenCV 中的 cv2.arcLength 與 cv2.approx
Thumbnail
2025/02/15
在電腦視覺應用中,輪廓(Contour)常用來描述物體的邊界。 當圖像中有雜訊或物體邊緣過於複雜時,我們可以利用輪廓逼近技術,將輪廓簡化成較少點數的多邊形,這不僅有助於後續的形狀分析,也能提高處理速度。 本文將介紹如何使用 OpenCV 中的 cv2.arcLength 與 cv2.approx
Thumbnail
2024/12/02
中值濾波器(Adaptive Median Filter)是一種針對噪聲去除的圖像處理技術,主要應用於處理含有椒鹽雜訊的圖像,但在椒鹽雜訊過大時就會面臨,若為了處理掉雜訊,使用的處理窗口(kernel)就要大一點,會造成圖像的邊緣模糊掉。 後面為解決這個問題,就發展了自適應中值濾波器,其概念源自於
Thumbnail
2024/12/02
中值濾波器(Adaptive Median Filter)是一種針對噪聲去除的圖像處理技術,主要應用於處理含有椒鹽雜訊的圖像,但在椒鹽雜訊過大時就會面臨,若為了處理掉雜訊,使用的處理窗口(kernel)就要大一點,會造成圖像的邊緣模糊掉。 後面為解決這個問題,就發展了自適應中值濾波器,其概念源自於
Thumbnail
2024/10/03
在影像處理中,形態學操作是非常重要的一種技術,能夠幫助我們去除噪點、強化特徵、修復物體的形狀等。形態學操作的核心是「結構元素」(kernel),不同形狀的結構元素會產生不同的處理效果。本文將介紹如何使用不同形狀的結構元素來進行圖像處理,並結合實際程式範例和測試圖片來說明其效果。
Thumbnail
2024/10/03
在影像處理中,形態學操作是非常重要的一種技術,能夠幫助我們去除噪點、強化特徵、修復物體的形狀等。形態學操作的核心是「結構元素」(kernel),不同形狀的結構元素會產生不同的處理效果。本文將介紹如何使用不同形狀的結構元素來進行圖像處理,並結合實際程式範例和測試圖片來說明其效果。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
呈上篇文章,針對單排的圖像文字增加間隔,但如果文字是雙排呢 [OpenCV][Python]OCR分割及增加間隔[單排文字]
Thumbnail
呈上篇文章,針對單排的圖像文字增加間隔,但如果文字是雙排呢 [OpenCV][Python]OCR分割及增加間隔[單排文字]
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
使用cv2.imread讀取圖片時,如果路徑有包含到中文,就會報錯。 本文將提供另外一個方式cv2.imdecode,路徑有包含到中文時仍可以正常讀取圖片。 測試範例 import cv2 img = cv2.imread('D:/CRABpy/write/圖檔/chars_01.png'
Thumbnail
使用cv2.imread讀取圖片時,如果路徑有包含到中文,就會報錯。 本文將提供另外一個方式cv2.imdecode,路徑有包含到中文時仍可以正常讀取圖片。 測試範例 import cv2 img = cv2.imread('D:/CRABpy/write/圖檔/chars_01.png'
Thumbnail
影像和檔案的處理技術已成為設計師的基本功。從精緻的插圖到複雜的版面設計,每一步操作都蘊含著無限的可能性與挑戰。本文將帶領您深入了解如何精準控制影像置入過程中的細節,從而達到既定的設計目標。 精確控制影像置入的技巧 當我們談論將影像或檔案置入Adobe Illustrator或InDesign時,
Thumbnail
影像和檔案的處理技術已成為設計師的基本功。從精緻的插圖到複雜的版面設計,每一步操作都蘊含著無限的可能性與挑戰。本文將帶領您深入了解如何精準控制影像置入過程中的細節,從而達到既定的設計目標。 精確控制影像置入的技巧 當我們談論將影像或檔案置入Adobe Illustrator或InDesign時,
Thumbnail
當我們在進行影像處理時, 在Python的世界最常聽到的就是OpenCV, 而我們在處理影片時也會想要僅針對某時間段的影片進行處理, 今天我們就來教您如何透過OpenCV來讀取特定的時間區段。 在進入主題之前, 有一些基本概念務必先行建立, 一個影片是由多張圖片組成的, 因此最小單元為一張圖
Thumbnail
當我們在進行影像處理時, 在Python的世界最常聽到的就是OpenCV, 而我們在處理影片時也會想要僅針對某時間段的影片進行處理, 今天我們就來教您如何透過OpenCV來讀取特定的時間區段。 在進入主題之前, 有一些基本概念務必先行建立, 一個影片是由多張圖片組成的, 因此最小單元為一張圖
Thumbnail
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
Thumbnail
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
Thumbnail
形態學操作在影像處理中有多種應用,特別是在處理二值化影像(黑白影像)。 在影像處理應用上,基本上都由侵蝕,膨脹這兩種方法,組合搭配而成。 常見應用場景 物體檢測與分割: 形態學操作可以用於增強或改善二值化影像中的物體邊界,使得物體的檢測和分割更加準確。
Thumbnail
形態學操作在影像處理中有多種應用,特別是在處理二值化影像(黑白影像)。 在影像處理應用上,基本上都由侵蝕,膨脹這兩種方法,組合搭配而成。 常見應用場景 物體檢測與分割: 形態學操作可以用於增強或改善二值化影像中的物體邊界,使得物體的檢測和分割更加準確。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News