前提・実現したいこと
関数 evaluate_smile_opencv にグレー画像となっている顔画像を与えて、画像から算出したintensityZeroOneの値を返したいのですが、
im[index1][index2] = int((item2 - lmin)/(lmax-lmin) * item2)
のところでプログラムが停止し下記に示すエラーが発生してしまいます。
発生している問題・エラーメッセージ
TypeError: only size-1 arrays can be converted to Python scalars
該当のソースコード
Python3
1 2import cv2 3 4def evaluate_smile_opencv(im): 5 smile_cascade = cv2.CascadeClassifier('./config/haarcascade_smile.xml') 6 #統一サイズに縮小 7 im = cv2.resize(im ,(100,100)) 8 #cv2.imshow("im", im) #確認のためサイズ統一させた画像を表示 9 10 # 輝度で規格化 11 lmin = im.min() #輝度の最小値 12 lmax = im.max() #輝度の最大値 13 for index1, item1 in enumerate(im): 14 for index2, item2 in enumerate(item1) : 15 im[index1][index2] = int((item2 - lmin)/(lmax-lmin) * item2) 16 #cv2.imshow("im2", im) #確認のため輝度を正規化した画像を表示 17 18 smiles= smile_cascade.detectMultiScale( 19 im,scaleFactor= 1.1, minNeighbors=0, minSize=(20, 20))#笑顔識別 20 21 22 if len(smiles) >0 : # 笑顔領域がなければ以下の処理を飛ばす.#if len(smiles) <=0 : continue でもよい.その場合以下はインデント不要 23 # サイズを考慮した笑顔認識 24 smile_neighbors = len(smiles) 25 #print("smile_neighbors=",smile_neighbors) #確認のため認識した近傍矩形数を出力 26 LV = 2/100 27 intensityZeroOne = smile_neighbors * LV 28 if intensityZeroOne > 1.0: intensityZeroOne = 1.0 29 #print(intensityZeroOne) #確認のため強度を出力 30 31 return intensityZeroOne
補足情報(FW/ツールのバージョンなど)
Windows 10
Python3.5

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。