本文介紹如何仔PIL和OpenCV之間圖像數(shù)據(jù)的轉(zhuǎn)換,因?yàn)橛袝r(shí)候在圖片處理速度上PIL會(huì)更勝一籌,現(xiàn)在這個(gè)轉(zhuǎn)換方法寫成一個(gè)函數(shù),以便它轉(zhuǎn)換具有灰度或 alpha 通道的圖像。
PIL圖像數(shù)據(jù)格式轉(zhuǎn)換成OpenCV圖像數(shù)據(jù)格式
1,使用cv2轉(zhuǎn)換色彩的方法
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轉(zhuǎn)換色彩的方法
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圖像數(shù)據(jù)格式轉(zhuǎn)換成PIL圖像數(shù)據(jù)格式
1,使用cv2轉(zhuǎn)換色彩的方法
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轉(zhuǎn)換色彩的方法
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
審核編輯:劉清
-
圖像數(shù)據(jù)
+關(guān)注
關(guān)注
0文章
52瀏覽量
11313 -
OpenCV
+關(guān)注
關(guān)注
31文章
635瀏覽量
41556 -
PIL
+關(guān)注
關(guān)注
0文章
19瀏覽量
8647
原文標(biāo)題:PIL圖像和OpenCV圖像數(shù)據(jù)格式互相轉(zhuǎn)換
文章出處:【微信號(hào):凌順實(shí)驗(yàn)室,微信公眾號(hào):凌順實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Vivado設(shè)計(jì)流程分析 Vivado HLS實(shí)現(xiàn)OpenCV的開發(fā)流程
![Vivado設(shè)計(jì)流程分析 Vivado HLS<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>OpenCV</b>的開發(fā)流程](https://file.elecfans.com/web1/M00/EC/0C/o4YBAGCCRVCAXkz1AAAjiLmqVGk982.png)
Vivado HLS實(shí)現(xiàn)OpenCV圖像處理的設(shè)計(jì)流程與分析
如何去實(shí)現(xiàn)一種基于opencv與flask的攝像頭圖像傳輸呢
如何使用Python中的OpenCV模塊檢測(cè)顏色
i.MX8m plus如何在ICC配置文件之間進(jìn)行轉(zhuǎn)換?
opencv中三種常見(jiàn)數(shù)據(jù)容器:Mat,cvMat和IplImage及它們編程顯示圖像的差異
關(guān)于MIL、SIL、PIL和HIL之間的聯(lián)系和異同分析
![關(guān)于MIL、SIL、<b class='flag-5'>PIL</b>和HIL<b class='flag-5'>之間</b>的聯(lián)系和異同分析](https://file.elecfans.com/web1/M00/A0/B7/pIYBAF1EVbWALGbJAAAgvy0o9ZA629.png)
OpenCV中實(shí)現(xiàn)了圖像形態(tài)學(xué)什么常見(jiàn)操作?
![<b class='flag-5'>OpenCV</b>中<b class='flag-5'>實(shí)現(xiàn)</b>了<b class='flag-5'>圖像</b>形態(tài)學(xué)什么常見(jiàn)操作?](https://file.elecfans.com/web1/M00/F1/01/o4YBAGCvOf2ASh65AAAyOsCzdy8910.png)
PIL的使用以及劃分圖像的皮膚區(qū)域
手把手教你使用LabVIEW OpenCV dnn實(shí)現(xiàn)圖像分類(含源碼)
PiL測(cè)試實(shí)戰(zhàn)(下)| PiL階段的閉環(huán)測(cè)試
![<b class='flag-5'>PiL</b>測(cè)試實(shí)戰(zhàn)(下)| <b class='flag-5'>PiL</b>階段的閉環(huán)測(cè)試](https://file.elecfans.com/web2/M00/52/D4/pYYBAGLNkrKAeFJaAAAjXRuImx0496.png)
如何安裝Python圖像處理PIL庫(kù)
![如何安裝Python<b class='flag-5'>圖像</b>處理<b class='flag-5'>PIL</b>庫(kù)](https://file1.elecfans.com/web2/M00/A4/14/wKgaomUAK2SAAyliAAH9hnH0cg4045.jpg)
評(píng)論