[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
131會員
217內容數
本業是影像辨識軟體開發,閒暇時間進修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
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
使用 LBP(Local Binary Patterns) 進行紋理分析和瑕疵檢測 Local Binary Patterns(LBP) 是一種用來描述圖像紋理的特徵提取技術。LBP 對於檢測表面紋理的異常具有很好的效果,尤其在檢測紋理一致的材料表面(例如紡織品、紙張、金屬)時,LBP 非常有用。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本課程特別為影片剪輯初學者而製作,剪映是一套功能強大的影片剪輯軟體,它的超做簡單且融入很多AI功能喔 進入剪映電腦版之後,就會出現以下的畫面,這就是剪映的首頁,對新手來說,剪映最常用的有兩項功能 第一個是-直接建立一個新創作,只要滑鼠點按 開始創作 即可 第二個是-從草稿區直接點選一個你想編輯
Thumbnail
在這篇文章中,我們將帶領讀者深入探討數位圖片管理的核心——「連結影像」與「嵌入影像」的使用技巧。這是每位從事視覺設計、版面編排和數位藝術的創作者必須掌握的基本知識。在進行數位設計時,如何選擇這兩種不同的圖片處理方式,不僅關係到作品的最終呈現,還直接影響到工作流程的效率和靈活性。 追尋影像的軌跡
Thumbnail
本篇內容介紹如何使用 Python中的 moviepy library 簡單的剪影片。 先安裝moviepy library , 用pip install moviepy , 可參考官方文件。 要剪的影片和python檔要在同個資料夾中,若不在同個位置要用 os library 更換路徑
Thumbnail
伽瑪校正(Gamma correction)被視為影像增強的一種方法之一。 通過調整 gamma 值,可以改變圖像的亮度和對比度,從而使圖像更清晰或更具有視覺效果。 以下將利用cv2.LUT及numpy的組合實現伽瑪校正,及詳細介紹cv2.LUT 函式應用。
Thumbnail
在影像處理中,我們總是想要讓特徵更加明顯一點,可以使用銳利化的方式將特徵的邊緣增強,提升影像的細節,圖像銳利後就會有提升解析度的感覺。 拉普拉斯運算子是一種常用於影像增強的方法之一,特別是用於提高影像的邊緣和細節。 在OpenCV中,你可以使用cv2.Laplacian函數來應用拉普拉斯運算子。
Thumbnail
直方圖均衡化處理是一種通過調整圖像的直方圖來改變圖像外觀和質量的圖像處理技術。這通常涉及對圖像的亮度、對比度和顏色分佈進行調整 此方法對於背景和前景均亮或均暗的影像很有用。​並在曝光過度或曝光不足的照片中獲得更好的細節。
Thumbnail
在某些特別的情況下,需要去調整亮度及對比度,讓我們想要的影像特徵更加明顯 本文將介紹利用這兩個函數 cv2.convertScaleAbs 和 cv2.addWeighted 來調整亮度及對比度。
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
使用 LBP(Local Binary Patterns) 進行紋理分析和瑕疵檢測 Local Binary Patterns(LBP) 是一種用來描述圖像紋理的特徵提取技術。LBP 對於檢測表面紋理的異常具有很好的效果,尤其在檢測紋理一致的材料表面(例如紡織品、紙張、金屬)時,LBP 非常有用。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本課程特別為影片剪輯初學者而製作,剪映是一套功能強大的影片剪輯軟體,它的超做簡單且融入很多AI功能喔 進入剪映電腦版之後,就會出現以下的畫面,這就是剪映的首頁,對新手來說,剪映最常用的有兩項功能 第一個是-直接建立一個新創作,只要滑鼠點按 開始創作 即可 第二個是-從草稿區直接點選一個你想編輯
Thumbnail
在這篇文章中,我們將帶領讀者深入探討數位圖片管理的核心——「連結影像」與「嵌入影像」的使用技巧。這是每位從事視覺設計、版面編排和數位藝術的創作者必須掌握的基本知識。在進行數位設計時,如何選擇這兩種不同的圖片處理方式,不僅關係到作品的最終呈現,還直接影響到工作流程的效率和靈活性。 追尋影像的軌跡
Thumbnail
本篇內容介紹如何使用 Python中的 moviepy library 簡單的剪影片。 先安裝moviepy library , 用pip install moviepy , 可參考官方文件。 要剪的影片和python檔要在同個資料夾中,若不在同個位置要用 os library 更換路徑
Thumbnail
伽瑪校正(Gamma correction)被視為影像增強的一種方法之一。 通過調整 gamma 值,可以改變圖像的亮度和對比度,從而使圖像更清晰或更具有視覺效果。 以下將利用cv2.LUT及numpy的組合實現伽瑪校正,及詳細介紹cv2.LUT 函式應用。
Thumbnail
在影像處理中,我們總是想要讓特徵更加明顯一點,可以使用銳利化的方式將特徵的邊緣增強,提升影像的細節,圖像銳利後就會有提升解析度的感覺。 拉普拉斯運算子是一種常用於影像增強的方法之一,特別是用於提高影像的邊緣和細節。 在OpenCV中,你可以使用cv2.Laplacian函數來應用拉普拉斯運算子。
Thumbnail
直方圖均衡化處理是一種通過調整圖像的直方圖來改變圖像外觀和質量的圖像處理技術。這通常涉及對圖像的亮度、對比度和顏色分佈進行調整 此方法對於背景和前景均亮或均暗的影像很有用。​並在曝光過度或曝光不足的照片中獲得更好的細節。
Thumbnail
在某些特別的情況下,需要去調整亮度及對比度,讓我們想要的影像特徵更加明顯 本文將介紹利用這兩個函數 cv2.convertScaleAbs 和 cv2.addWeighted 來調整亮度及對比度。