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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Azure

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

Q&A

解決済

1回答

1523閲覧

テザリングでiphoneを経由してAzureを使ったときに生じるエラー[Errno 10060]について

suhsuu

総合スコア15

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Azure

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

0グッド

0クリップ

投稿2019/07/03 10:55

編集2019/07/03 12:55

前提・実現したいこと

外出先でAzureのFace_APIを使用して顔認識したい。
よろしくお願いします。

発生している問題・エラーメッセージ

[Errno 10060] 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。

該当のソースコード

Python3

1import http.client, urllib.request, urllib.parse, urllib.error 2import json 3import cv2 4 5def display_expression(data,img): 6 font = cv2.FONT_HERSHEY_PLAIN 7 font_size = 1 8 9 data = json.loads(data) 10 for face in data: 11 f_rec = face['faceRectangle'] 12 width = f_rec['width'] 13 height = f_rec['height'] 14 left = f_rec['left'] 15 top = f_rec['top'] 16 cv2.rectangle(img,(left,top),(left+width,top+height),(0,200,0),2) 17 18 f_attr = face['faceAttributes'] 19 gender = f_attr['gender'] 20 age = f_attr['age'] 21 smile = f_attr['smile'] 22 cv2.putText(img, gender, (left, 30+top+height), font, font_size, (0, 200, 0), 1) 23 cv2.putText(img, 'Age' + str(age), (left, 60+top+height), font, font_size, (0, 200, 0), 1) 24 cv2.putText(img, 'Smile' + str(smile), (left, 90+top+height), font, font_size, (0, 200, 0), 1) 25 return img 26 27#### Request headers 28#'Content-Type': APIに送るメディアのタイプ. 29# 'application/json'(URL指定の場合), 'application/octet-stream' (Local ファイル転送の場合) 30#'Ocp-Apim-Subscription-Key': APIキーを指定する 31headers = { 32# 'Content-Type': 'application/json', 33 'Content-Type': 'application/octet-stream', 34 'Ocp-Apim-Subscription-Key': 'ここはAPIキー', 35} 36 37#### Request parameters 38# 取得したい情報について、パラメータを指定する 39# 'returnFaceId': 入力した顔画像に付与されるIDを返すかどうか 40# 'returnFaceLandmarks' : 目や口などの特徴となる部分の座標を返すかどうか 41# 'returnFaceAttributes' : 認識した顔からわかる属性を返す 42# 指定できるパラメータは以下で、コンマで分けて複数指定可能 43# age, gender, headPose, smile, facialHair, 44# glasses, emotion, hair, makeup, occlusion, 45# accessories, blur, exposure and noise 46params = urllib.parse.urlencode({ 47 'returnFaceAttributes': 'age,gender,smile,emotion' 48}) 49 50#### Request body 51# 入力したい画像の指定をする. 画像URLの指定, local ファイルの指定から選択 52# 画像はJPEG, PNG, GIF, BMPに対応 53# サイズの上限は4MB 54# 認識可能な顔のサイズは 36x36 - 4096x4096 pixelsの範囲 55# 最大64個の顔を認識可能 56 57## URL 指定の場合以下のコメントアウトを外すし、image_urlを指定する 58#image_url = 'https://XXXXX' 59#body = { 'url': image_url } 60#body = json.dumps(body) 61 62## Local file指定の場合 63# 以下の image_file_path に読み込むファイルのパスを指定する 64image_file_path = './images/img.jpg' 65image_file = open(image_file_path,'rb') 66body = image_file.read() 67image_file.close() 68 69#### API request 70# 接続先リージョンによっては, 以下HTTPSConnection の "westus.api.cognitive.microsoft.com" 部分は変更する. 71# この場合は「westus」なので北米西部リージョン 72# なお "/face/v1.0/detect?%s" の部分が接続先APIの機能を指定している 73try: 74 conn = http.client.HTTPSConnection('japaneast.api.cognitive.microsoft.com') 75 conn.request("POST", "/face/v1.0/detect?%s" % params, body, headers) 76 response = conn.getresponse() 77 data = response.read().decode() 78 parsed = json.loads(data) 79 print(json.dumps(parsed, indent=4)) 80 conn.close() 81except Exception as e: 82 print("[Errno {0}] {1}".format(e.errno, e.strerror)) 83 84img = cv2.imread(image_file_path) 85display_expression(data, img) 86cv2.imwrite("./images/smile_img.jpg",img) 87 88cv2.imshow('image',img) 89cv2.waitKey(0) 90cv2.destroyAllWindows()

試したこと

自宅のWiFiを使用してネット接続させている場合は、エラーが生じることなくAzureからのデータが返ってきます。
iPhoneを用いてテザリング接続させたときは必ず上記のエラーが発生します。

補足情報(FW/ツールのバージョンなど)

Python 3.5.5
Windows 10

もしかしたら下記リンク先に書かれているようにプロキシ設定の問題かもと思いましたが、この場合の適切なプロキシサーバのアドレスをどのようにして調べればよいかもわからず途方に暮れてしまいました。
https://qiita.com/gazami/items/4b42371ed831c159fb04

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

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

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

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

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

guest

回答1

0

自己解決

iPhone/PC間をUSBケーブルで接続していたのを、WiFiによる接続に変えてみたところうまく行くようになりました。
もしかしたらUSBの接続端子による違いもあるのかもしれませんが試していません。

投稿2019/07/12 23:27

suhsuu

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問