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

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

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

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

Python

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

Q&A

0回答

371閲覧

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

codarcodar

総合スコア1

Streamlit

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

Python

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

0グッド

0クリップ

投稿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

1from sqlalchemy import column 2import streamlit as st 3import pandas as pd 4import numpy as np 5import asyncio 6import io 7import glob 8import os 9from urllib.parse import urlparse 10from io import BytesIO 11 12st.title('顔認識アプリ') 13 14KEY = "自分のKeyを入力" 15ENDPOINT = "自分のENDPOINTを入力" 16face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY)) 17 18upload_file = st.file_uploader("Choose an image...", type = 'JPG') 19 20#変数に値が入っていたら 21if upload_file is not None: 22 #アップロードした画像を開く 23 image_data = Image.open(upload_file) 24 25 with io.BytesIO() as output: 26 image_data.save(output, format="JPEG") 27 binary_img = output.getvalue() #バイナリーデータ取得 28 29 # 認識された顔周辺に四角を描く関数 30 def getRectangle(faceDictionary): 31 rect = faceDictionary.face_rectangle 32 left = rect.left 33 top = rect.top 34 right = left + rect.width 35 bottom = top + rect.height 36 return ((left, top), (right, bottom)) 37 38 # 認識された顔の上に年齢を描く関数 39 def getAge(faceDictionary): 40 rect = faceDictionary.face_rectangle 41 left = rect.left 42 top = rect.top - 20 43 return (left, top) 44 45 # イメージオブジェクト生成 46 drawing = ImageDraw.Draw(image_data) 47 48 detected_faces = face_client.face.detect_with_stream( 49 image_data, 50 return_face_landmarks=True, 51 return_face_attributes=['accessories','age','emotion','gender','glasses','hair','makeup','smile'] 52 ) 53 54 # 関数を呼び出して、顔に四角を描く 55 for face in detected_faces: 56 drawing.rectangle(getRectangle(face), outline='Blue', width = 3) 57 drawing.text(getAge(face), str(face.face_attributes.age), align = 'Left', 58 fill = 'Red') 59 60 61 #画像の表示 62 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

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問