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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Streamlit

Streamlitは、Pythonでフロントエンドアプリケーションを構築できるフレームワーク。HTML/CSSの知識が不要で、描画ライブラリで作成したグラフを埋め込むことが可能です。機械学習のレポート作成やデータ分析にも応用できます。

Python

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

受付中

AzureFaceAPIで発生した「AttributeError: read」エラーが解消できない(Python3)

codarcodar
codarcodar

総合スコア1

Streamlit

Streamlitは、Pythonでフロントエンドアプリケーションを構築できるフレームワーク。HTML/CSSの知識が不要で、描画ライブラリで作成したグラフを埋め込むことが可能です。機械学習のレポート作成やデータ分析にも応用できます。

Python

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

0回答

0評価

0クリップ

211閲覧

投稿2022/02/21 06:13

編集2022/02/21 06:23

ご覧いただき、ありがとうございます。
Python初学者です。よろしくお願いいたします。

概要

Python3エラー「AttributeError: read」を解消し、顔検出アプリを完成させたい。

詳細

下記の動画及びドキュメントを参考に、streamlitとAzure Face APIをつかって顔検出アプリを作成しています。

【有料級】今話題のPythonライブラリStreamlitを用いて、顔検出アプリの作成から公開までの流れをわかりやすく解説
https://www.youtube.com/watch?v=zpBjbK6jic0&t=4217s

Azure FaceAPIクイックスタート
https://docs.microsoft.com/ja-jp/azure/cognitive-services/face/quickstarts/client-libraries?tabs=visual-studio&pivots=programming-language-python

  • 1記事目で作っているアプリを作りたいのですが、動画作成から1年経過しており、情報が古かったため、MircroAzureの公式ドキュメントを参考に改変しています。

  • 初期画面(アップロード画面の表示)の表示と、アップロード画像の選択まではできています。

  • Python3.9を使っています。

  • アプリ部分(streamlit)とロジック部分(FaceAPI)を結合する時に、25行目以降のwith部分を追加していた時に下記エラーが発生しました。

 →streamlitの実装部分は正常に動いているので、FaceAPIの実装でうまく行っていません。

  • エラーがPILのImage.pyで生じているため、Image.open(upload_file)で開けない(read)できないということなのかと思いますが、どのように変更したらよいか皆目検討も付きませんでした。

以上、よろしくお願いします。

python

from sqlalchemy import column import streamlit as st import pandas as pd import numpy as np import asyncio import io import glob import os from urllib.parse import urlparse from io import BytesIO st.title('顔認識アプリ') KEY = "自分のKeyを入力" ENDPOINT = "自分のENDPOINTを入力" face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY)) upload_file = st.file_uploader("Choose an image...", type = 'JPG') #変数に値が入っていたら if upload_file is not None: #アップロードした画像を開く image_data = Image.open(upload_file) with io.BytesIO() as output: image_data.save(output, format="JPEG") binary_img = output.getvalue() #バイナリーデータ取得 # 認識された顔周辺に四角を描く関数 def getRectangle(faceDictionary): rect = faceDictionary.face_rectangle left = rect.left top = rect.top right = left + rect.width bottom = top + rect.height return ((left, top), (right, bottom)) # 認識された顔の上に年齢を描く関数 def getAge(faceDictionary): rect = faceDictionary.face_rectangle left = rect.left top = rect.top - 20 return (left, top) # イメージオブジェクト生成 drawing = ImageDraw.Draw(image_data) detected_faces = face_client.face.detect_with_stream( image_data, return_face_landmarks=True, return_face_attributes=['accessories','age','emotion','gender','glasses','hair','makeup','smile'] ) # 関数を呼び出して、顔に四角を描く for face in detected_faces: drawing.rectangle(getRectangle(face), outline='Blue', width = 3) drawing.text(getAge(face), str(face.face_attributes.age), align = 'Left', fill = 'Red') #画像の表示 image_data.show()
File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/streamlit/script_runner.py", line 379, in _run_script exec(code, module.__dict__) File "/Users/user/Desktop/python_lesson/顔検出アプリ/main.py", line 98, in <module> detected_faces = face_client.face.detect_with_stream( File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/azure/cognitiveservices/vision/face/operations/_face_operations.py", line 779, in detect_with_stream response = self._client.send(request, stream=False, **operation_config) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/msrest/service_client.py", line 336, in send pipeline_response = self.config.pipeline.run(request, **kwargs) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/msrest/pipeline/__init__.py", line 197, in run return first_node.send(pipeline_request, **kwargs) # type: ignore File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/msrest/pipeline/__init__.py", line 150, in send response = self.next.send(request, **kwargs) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/msrest/pipeline/requests.py", line 72, in send return self.next.send(request, **kwargs) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/msrest/pipeline/requests.py", line 137, in send return self.next.send(request, **kwargs) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/msrest/pipeline/__init__.py", line 150, in send response = self.next.send(request, **kwargs) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/msrest/pipeline/requests.py", line 193, in send self.driver.send(request.http_request, **kwargs) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/msrest/universal_http/requests.py", line 333, in send return super(RequestsHTTPSender, self).send(request, **requests_kwargs) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/msrest/universal_http/requests.py", line 139, in send response = session.request( File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/requests/sessions.py", line 542, in request resp = self.send(prep, **send_kwargs) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/requests/sessions.py", line 655, in send r = adapter.send(request, **kwargs) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/requests/adapters.py", line 469, in send for i in request.body: File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/msrest/service_client.py", line 137, in stream_upload chunk = data.read(self.config.connection.data_block_size) File "/Users/user/opt/anaconda3/lib/python3.9/site-packages/PIL/Image.py", line 546, in __getattr__ raise AttributeError(name) AttributeError: read

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Streamlit

Streamlitは、Pythonでフロントエンドアプリケーションを構築できるフレームワーク。HTML/CSSの知識が不要で、描画ライブラリで作成したグラフを埋め込むことが可能です。機械学習のレポート作成やデータ分析にも応用できます。

Python

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