2017-01-19 44 views
3

私は現在、プログラムを通常の画像からbinaryzationに変更しようとしています。私はpythonでopencvを使用しますが、事務所それは未知の誤りで出てくる。だから私はここに来て助けを求める。TypeError:srcデータ型= 17はサポートされていません

from PIL import Image 
import numpy as np 
import matplotlib.pyplot as plt 
import cv2 
im = Image.open('card.jpg') 
img = np.array(im) 
if img.ndim == 3: 
    img = img[:, :,0] 
    plt.gray() 
ret, thresh1 = cv2.threshold(img, 50, 255, cv2.THRESH_BINARY) 


plt.subplot(222) 
plt.imshow(thresh1) 
plt.show() 

トレースバックは、あなたがOpenCVの種類hereのリストを見つけることができます

Traceback (most recent call last): File "D:/tensorflow/opencv.py", line 12, in ret, thresh1 = cv2.threshold(img, 50, 255, cv2.THRESH_BINARY) TypeError: src data type = 17 is not supported

+0

トレースバック(最後の最新の呼び出し): ファイル "D:/tensorflow/opencv.py"、12行目、 RET、THRESH1 = cv2.threshold(IMG、50、255、cv2.THRESH_BINARY) TypeError例外で:srcデータ型= 17はサポートされていません –

答えて

3

です。

type = 17は、画像がのCV_8SC3、別名3チャンネルの画像であることを示します。しかし、thresholdはタイプがCV_8UC1またはCV_32FC1のいずれかでなければならないことを意味しているだけ

(single-channel, 8-bit or 32-bit floating point).

を受け入れます。

imgshapedtypeを確認し、必要に応じてimgを調整します。