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

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

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

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

OpenCV

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

1722閲覧

OpenCVでカメラから取得した画像を読み込めない

Kokku

総合スコア39

Windows 10

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

OpenCV

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/09/28 17:24

編集2020/09/29 05:37

opencvとFaceAPIを使ってカメラから画像を取得し感情推定するプログラムを作ろうと思っているのですが、下記コードを実行すると画像が読み込めないというエラーが出てしまいます。
リンク内容
このサイトを参考にしてみたのですが実行結果は変わりませんでした...
何が原因なのかもわからず検索もできないため、詰まっています。なにか解決方法があれば教えていただきたいです。

実行コード

import cognitive_face as CF import json ##################### import requests import time import numpy as np import cv2 from datetime import datetime import matplotlib.pyplot as plt import pandas as pd #import os; print(os.getcwd()) cap = cv2.VideoCapture(0) data_name = ["anger","contempt","disgust","fear","happiness",'sadness','surprise']#保存データの系列 emotion_data =[0,0,0,0,0,0,0]#初期値 count = 0#撮影回数を示すカウンタ ##顔認識の設定 cascade_path = 'E:\opencvcascade/haarcascade_frontalface_alt.xml'# 顔判定で使うxmlファイルを指定する。(opencvのpathを指定) cascade = cv2.CascadeClassifier(cascade_path) ##Faceの設定 subscription_key = '###############################3'#ここに取得したキー1を入力 assert subscription_key face_api_url = 'https://########################/face/v1.0/detect'#ここに取得したエンドポイントのURLを入力 ##実行 while True: r, img = cap.read() 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で顔判定する際の最小の四角の大きさを指定できる。(小さい値を指定し過ぎると顔っぽい小さなシミのような部分も判定されてしまう。) if len(faces) > 0: #顔を検出した場合 for face in faces: now = datetime.now()#撮影時間 filename = r"c:\Users\shota\img\ " + str(now) + ".jpg" #保存するfilename #cv2.imwrite(filename, img)#画像の書き出し image_data = open(filename, "rb").read()#処理をする画像を選択 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で解析 response.raise_for_status() analysis = response.json()#json出力 #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) else: df = pd.concat([df_past,df],axis = 1, sort = False)#dfを更新 print(df) #plt.plot(df.T)#dfの行列を反転 #plt.legend(data_name)#凡例を表示 #plt.draw()#グラフ描画 #plt.pause(4)#ウェイト時間(=Azure更新時間) #plt.cla()#グラフを閉じる ############################## #KEY = 'c5a1c742742b41f780a74a29b0297dd1' #ENDPOINT = 'https://shota0720.cognitiveservices.azure.com/face/v1.0' #CF.Key.set(KEY) #CF.BaseUrl.set(ENDPOINT) img = filename faces = CF.face.detect(img, attributes='emotion') f=json.dumps(faces) j=json.loads(f) #print(len(j)) #for i in range(0,len(j)): #print(j[i]['faceAttributes']['emotion'])

エラー画面

--------------------------------------------------------------------------- AssertionError Traceback (most recent call last) <ipython-input-13-72da563815dc> in <module> 30 while True: 31 r, img = cap.read() ---> 32 assert img is not None, 'cannot open file as img.' 33 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#グレースケールに変換 34 faces=cascade.detectMultiScale(img_gray, scaleFactor=1.1, minNeighbors=1, minSize=(100, 100))#顔判定 minSizeで顔判定する際の最小の四角の大きさを指定できる。(小さい値を指定し過ぎると顔っぽい小さなシミのような部分も判定されてしまう。) AssertionError: cannot open file as img.

引用元
リンク内容
リンク内容
pyplotが必要ないと思ったので二個目のサイトの”まずはmacで試してみる”というコードと一個目のサイトのコードをくっつけてプログラムを完成させたいと思い試行錯誤していました。

開発環境
windows10
anaconda

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

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

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

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

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

tiitoi

2020/09/28 17:43

そもそもカメラから画像は取得できているのでしょうか? cap = cv2.VideoCapture(0) print(cap.isOpened()) が False になる場合、カメラのアクセスにそもそも失敗しています
yuki23

2020/09/29 00:16

同じ問題に対する質問であれば元の質問を編集してください。
Kokku

2020/09/29 03:24

Trueが返ってきたので、アクセスはできているようです...
1T2R3M4

2020/09/29 14:08

通常のCamera映像のPreviewは動作しているのですか?
Kokku

2020/09/29 15:19 編集

import cv2 cap = cv2.VideoCapture(0) print(cap.isOpened()) これで実行するとTrueが返ってきます。 import cv2 # VideoCapture オブジェクトを取得します capture = cv2.VideoCapture(0) while(True): ret, frame = capture.read() cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break capture.release() cv2.destroyAllWindows() これを実行しても正常に動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問