本文介紹如何仔PIL和OpenCV之間圖像數據的轉換,因為有時候在圖片處理速度上PIL會更勝一籌,現在這個轉換方法寫成一個函數,以便它轉換具有灰度或 alpha 通道的圖像。
PIL圖像數據格式轉換成OpenCV圖像數據格式
1,使用cv2轉換色彩的方法
import numpy as np import cv2 def pil2cv(PIL_image): ''' PIL型 -> OpenCV型 ''' cv2_image = np.array(PIL_image, dtype=np.uint8) if cv2_image.ndim == 2: # 黑白 pass elif cv2_image.shape[2] == 3: # 彩色的3通道 new_image = cv2.cvtColor(cv2_image, cv2.COLOR_RGB2BGR) elif cv2_image.shape[2] == 4: # 包含透明的4通道 cv2_image = cv2.cvtColor(cv2_image, cv2.COLOR_RGBA2BGRA) return cv2_image
2,不 使用cv2轉換色彩的方法
import numpy as np def pil2cv(PIL_image): ''' PIL型 -> OpenCV型 ''' cv2_image = np.array(PIL_image, dtype=np.uint8) if cv2_image.ndim == 2: # 黑白 pass elif cv2_image.shape[2] == 3: # 彩色的3通道 cv2_image = cv2_image[:, :, ::-1] elif cv2_image.shape[2] == 4: # 包含透明的4通道 cv2_image = cv2_image[:, :, [2, 1, 0, 3]] return cv2_image
OpenCV圖像數據格式轉換成PIL圖像數據格式
1,使用cv2轉換色彩的方法
from PIL import Image import cv2 def cv2pil(cv2_image): ''' OpenCV型 -> PIL型 ''' pil_image = cv2_image.copy() if pil_image.ndim == 2: # 黑白 pass elif pil_image.shape[2] == 3: # 彩色的3通道 pil_image = cv2.cvtColor(pil_image, cv2.COLOR_BGR2RGB) elif pil_image.shape[2] == 4: # 包含透明的4通道 pil_image = cv2.cvtColor(pil_image, cv2.COLOR_BGRA2RGBA) pil_image = Image.fromarray(pil_image) return pil_image
2,不使用cv2轉換色彩的方法
from PIL import Image def cv2pil(cv2_image): ''' OpenCV型 -> PIL型 ''' pil_image = cv2_image.copy() if pil_image.ndim == 2: # 黑白 pass elif pil_image.shape[2] == 3: # 彩色的3通道 pil_image = pil_image[:, :, ::-1] elif pil_image.shape[2] == 4: # 包含透明的4通道 pil_image = pil_image[:, :, [2, 1, 0, 3]] pil_image = Image.fromarray(new_pil_imageimage) return pil_image
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
圖像數據
+關注
關注
0文章
52瀏覽量
11271 -
OpenCV
+關注
關注
30文章
628瀏覽量
41260 -
PIL
+關注
關注
0文章
19瀏覽量
8603
原文標題:PIL圖像和OpenCV圖像數據格式互相轉換
文章出處:【微信號:凌順實驗室,微信公眾號:凌順實驗室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Vivado設計流程分析 Vivado HLS實現OpenCV的開發流程
作者:Harvest Guo來源:Xilinx DSP Specilist 本文通過對OpenCV中圖像類型和函數處理方法的介紹,通過設計實例描述在vivadoHLS中調用OpenCV庫函數實
發表于 04-23 11:32
?5852次閱讀
Vivado HLS實現OpenCV圖像處理的設計流程與分析
::Mat《》類型的轉換。2、使用VivadoHLS實現OpenCV到RTL代碼轉換的流程2.1 OpenCV設計中的權衡
發表于 07-08 08:30
如何去實現一種基于opencv與flask的攝像頭圖像傳輸呢
硬件:eaidk610(fedaro28)、普通帶usb接口攝像頭軟件環境: python3.9、opencv4.6、Flask2.2主要實現了從板子的連接的攝像頭收集圖像并在網頁中展示,板子上沒有
發表于 10-18 14:25
如何使用Python中的OpenCV模塊檢測顏色
numpy然后,導入模塊。讀取圖像并使用 OpenCV 模塊中的 cvtColor() 函數將BGR圖像轉換為 HSV (色調、飽和度、值) 圖像
發表于 02-09 16:31
i.MX8m plus如何在ICC配置文件之間進行轉換?
我知道 NXP OpenCV fork 集成了 eIQ,用于 i.MX8m plus 上的硬件加速神經圖像處理。
但是,非機器學習圖像處理又如何呢,例如在 ICC 配置文件
發表于 05-31 06:02
opencv中三種常見數據容器:Mat,cvMat和IplImage及它們編程顯示圖像的差異
IplImage, CvMat, Mat 的關系opencv中常見的與圖像操作有關的數據容器有Mat,cvMat和IplImage,這三種類型都可以代表和顯示圖像,但是,Mat類型側重
發表于 11-25 13:18
?6566次閱讀
關于MIL、SIL、PIL和HIL之間的聯系和異同分析
SIL和PIL是等效性測試,測試的目的是為了驗證自動生成的代碼和模型具有相同的行為,既然如此,對于SIL和PIL的測試用例就沒有功能意義上的要求,只要要求代碼和模型輸入的測試數據相同即可,當然希望
PIL的使用以及劃分圖像的皮膚區域
本項目將使用python3去識別圖片是否為色情圖片,會使用到PIL這個圖像處理庫,并且編寫算法來劃分圖像的皮膚區域
PiL測試實戰(下)| PiL階段的閉環測試
算法(ControllerModel)刷入目標板,那如何帶著位于PC端的PlantModel一起進行閉環測試呢?圖1PiL階段的閉環測試流程下面我會為以一個座艙溫度
如何安裝Python圖像處理PIL庫
安裝PIL庫 要使用PIL庫,我們首先需要安裝它。有兩種方法可以安裝PIL庫: 方法一:使用pip命令,在終端或命令行中輸入以下代碼: pip install Pillow 方法二:從官網下
OpenCV圖像識別C++代碼
安裝OpenCV庫 首先,您需要在您的計算機上安裝OpenCV庫。您可以從OpenCV官網下載預編譯的庫或從源代碼編譯。安裝完成后,確保將OpenCV的頭文件和庫文件添加到您的項目中。
評論