質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

0回答

1098閲覧

cv::CascadeClassifier::detectMultiScale というエラーが起きてしまう。

Kokku

総合スコア39

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2020/09/30 16:27

OpenCVとAzureのFaceAPIを使ってカメラから顔を検知し感情を推定するプログラムを完成させたいのですが、コードを実行するとこのようなエラーが出てしまいます。

import requests import json import time import numpy as np import cv2 #from datetime import datetime import matplotlib.pyplot as plt import pandas as pd ##初期設定 cap=cv2.VideoCapture(0) #0にするとmacbookのカメラ、1にすると外付けのUSBカメラにできる #csv_name = datetime.now().strftime('%Y%m%d_%H%M')#csvファイルとして保存するファイル名 data_name = ["anger","contempt","disgust","fear","happiness",'sadness','surprise']#保存データの系列 emotion_data =[0,0,0,0,0,0,0]#初期値 count = 0#撮影回数を示すカウンタ ##顔認識の設定 cascade_path = r'C\Users\shota\opencvcascade\haarcascade_frontalface_alt.xml'# 顔判定で使うxmlファイルを指定する。(opencvのpathを指定) cascade = cv2.CascadeClassifier(cascade_path) ##Faceの設定 subscription_key = 'c5a1c742742b41f780a74a29b0297dd1'#ここに取得したキー1を入力 assert subscription_key face_api_url = 'https://https://shota0720.cognitiveservices.azure.com/face/v1.0/detect'#ここに取得したエンドポイントのURLを入力 ##実行 while True: ret, img = cap.read() print(1) assert img is not None, 'cannot open file as img.' img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#グレースケールに変換 faces=cascade.detectMultiScale(img_gray, scaleFactor=1.1, minNeighbors=1, minSize=(100, 100))#顔判定 minSizeで顔判定する際の最小の四角の大きさを指定できる。(小さい値を指定し過ぎると顔っぽい小さなシミのような部分も判定されてしまう。) print(2) if len(faces) > 0: #顔を検出した場合 for face in faces: now = 1#撮影時間 filename = r"C\Users\shota\opencvcascade\img "+str(now)+'.jpg'#保存するfilename cv2.imwrite(filename, img)#画像の書き出し print(3) with open(filename, mode="rb") as image_data:#処理をする画像を選択 content = image_data.read() print(4) assert img is not None, 'cannot open file as img2.' print(content) now += 1 headers = {'Ocp-Apim-Subscription-Key': subscription_key, 'Content-Type': 'application/octet-stream'} params = { 'returnFaceId': 'true', 'returnFaceLandmarks': 'false', 'returnFaceAttributes': 'age,gender,headPose,smile,facialHair,glasses,emotion,hair,makeup,occlusion,accessories,blur,exposure,noise', } response = requests.post(face_api_url, headers=headers, params=params, data=image_data)#FaceAPIで解析 print(5) response.raise_for_status() analysis = response.json()#json出力 print(6) #faceのjsonから抽出する項目をピック result = [analysis[0]['faceAttributes']['emotion']['anger'],analysis[0]['faceAttributes']['emotion']['contempt'], analysis[0]['faceAttributes']['emotion']['disgust'],analysis[0]['faceAttributes']['emotion']['fear'], analysis[0]['faceAttributes']['emotion']['happiness'],analysis[0]['faceAttributes']['emotion']['sadness'], analysis[0]['faceAttributes']['emotion']['surprise']] emotion_data = np.array(result) + np.array(emotion_data) df = pd.DataFrame({now:emotion_data}, index=data_name)#取得データをDataFrame1に変換しdfとして定義 if count == 0:#初期 print(df) print(7) else: df = pd.concat([df_past,df],axis = 1, sort = False)#dfを更新 print(df) print(8) plt.plot(df.T)#dfの行列を反転 plt.legend(data_name)#凡例を表示 plt.draw()#グラフ描画 plt.pause(4)#ウェイト時間(=Azure更新時間) plt.cla()#グラフを閉じる print(9) count = count + 1#撮影回数の更新 df_past = df#df_pastを更新 df.T.to_csv(csv_name+'.csv')#感情分析結果をcsvファイルとして書き出し print(10)
1 --------------------------------------------------------------------------- error Traceback (most recent call last) <ipython-input-1-c94dff02e2d2> in <module> 30 assert img is not None, 'cannot open file as img.' 31 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#グレースケールに変換 ---> 32 faces=cascade.detectMultiScale(img_gray, scaleFactor=1.1, minNeighbors=1, minSize=(100, 100))#顔判定 minSizeで顔判定する際の最小の四角の大きさを指定できる。(小さい値を指定し過ぎると顔っぽい小さなシミのような部分も判定されてしまう。) 33 print(2) 34 if len(faces) > 0: #顔を検出した場合 error: C:\ci\opencv_1512688052760\work\modules\objdetect\src\cascadedetect.cpp:1698: error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale

いろいろなサイトを見て自分の環境にあったように少し改変しています。
初心者でどの部分を変更すれば直るのかがわからず悩んでいます。
解決法などがあれば教えていただきたいです。

今出ているエラー
ファイル指定しても保存できない。これをするだけでいい?→(windowsでは:を指定できないので削除。)
カメラの読み込み、保存時にcvtcolorエラーがでている。
保存はできているがファイルを見ると0バイトになっている。

開発環境
windows
anaconda
opencv
FaceAPI

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問