2017-09-05 32 views
-1
import cv2 
import numpy as np 
from PIL import Image 

img = Image.open("test.jpg") 

imgfilename = img.filename 

imgb,imgg,imgr = cv2.split(img) 
count = 0 

我已經得到了以下錯誤,當我嘗試運行我的代碼 - 這是我得到的錯誤:米不是numpy的陣列,無論是標量

File "WB.py", line 9, in <module> 
    imgb,imgg,imgr = cv2.split(img) 
TypeError: m is not a numpy array, neither a scalar 
+0

你有沒有讀過['docs'](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#cv2.split)? – Divakar

回答

0

你」通常不應該將PIL與numpy一起使用,這些庫不會互相影響很多。從numpy(和opencv)的角度來看,圖像只是任何給定類型(二維用於灰度,三維用於顏色)的2D或3D array。另外cv2默認使用BGR ...

cv2.imread(path, cv2.IMREAD_COLOR)開始而不是Image.open(path)

+0

我不會說他們「你通常不應該將PIL與numpy一起使用」--- PIL只是將圖像保存爲「PIL Image」類型的對象,而numpy則將它們保存爲「numpy ndarray」類型的對象。 'np.array()'完美地將圖像轉換爲數組,並且由於PIL支持更多的圖像類型(比如'.gif')而不是'OpenCV',並且它是一個相當常見的庫,我已經將它們結合使用這裏和那裏。 –

0

您應該使用PIL中提供的拆分功能來實現此目的。

Image.split()

這是因爲圖像是在OpenCV中和PIL不同的解釋。因此,你不能交換這些包中可用的功能。

+0

如果你想堅持使用PIL圖像類,那麼是的---使用PIL功能。但是由於OP在OpenCV之前發佈過一次,也許你可以擴展這個答案,提供一些關於使用OpenCV函數的建議,或者如何使用numpy數組來處理這兩個函數。 –

相關問題