本文介紹如何仔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文章
47瀏覽量
11184 -
OpenCV
+關注
關注
29文章
612瀏覽量
40823 -
PIL
+關注
關注
0文章
18瀏覽量
8519
原文標題:PIL圖像和OpenCV圖像數據格式互相轉換
文章出處:【微信號:凌順實驗室,微信公眾號:凌順實驗室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
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
【EASY EAI Nano開源套件試用體驗】3. OpenCV 圖像處理開發測試
RkMedia SDK和OpenCV對接,完成opencv中的圖像采集輸入與輸出顯示。 方法就是把OPenCV的Mat圖像矩陣中的
發表于 03-08 00:03
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
?6435次閱讀
OpenCV中的圖像的計算
今天我們一起學習的是OpenCV中的圖像的計算,在圖像計算中,分為像素級運算和代數運算這兩大類,今天我們借助OpenCV中的函數一起來看看這些運算。 一:
PIL的使用以及劃分圖像的皮膚區域
本項目將使用python3去識別圖片是否為色情圖片,會使用到PIL這個圖像處理庫,并且編寫算法來劃分圖像的皮膚區域
PiL測試實戰(下)| PiL階段的閉環測試
作者:酷兔本兔小編:吃不飽上篇我們介紹了單元級軟件的PiL測試,對于集成級的PiL測試,其流程和單元階段基本一致。然而,對于一些帶有反饋控制邏輯的集成測試(如電機控制器MCU),PiL階段會將控制
如何安裝Python圖像處理PIL庫
安裝PIL庫 要使用PIL庫,我們首先需要安裝它。有兩種方法可以安裝PIL庫: 方法一:使用pip命令,在終端或命令行中輸入以下代碼: pip install Pillow 方法二:從官網下
評論