前提・実現したいこと
画像認識を行うスマホアプリを見た目部分はswift,画像処理部分はflaskで行おうとしています。
swift上で呼び出しすることがうまく行かず手詰まり担ったので質問させていただきます。
発生している問題・エラーメッセージ
VSCode側で、405を返しているが、printして確認しようとするとnilが返されてしまっている。
該当のソースコード
python
1from flask import Flask, jsonify, request 2from flask_cors import CORS 3import cv2 4import numpy as np 5import base64 6 7app = Flask('flask-tesseract-api') 8CORS(app) 9 10@app.route("/image/", methods=["POST"]) 11def post(): 12 """ 13 画像をグレースケールに変換する 14 """ 15 16 response = [] 17 18 for json in request.json: 19 20 # Imageをデコード 21 img_stream = base64.b64decode(json['Image']) 22 23 # 配列に変換 24 img_array = np.asarray(bytearray(img_stream), dtype=np.uint8) 25 26 # open-cv でグレースケール 27 img_gray = cv2.imdecode(img_array, 0) 28 29 # 変換結果を保存 30 cv2.imwrite('result.png', img_gray) 31 32 # 保存したファイルに対してエンコード 33 with open('result.png', "rb") as f: 34 img_base64 = base64.b64encode(f.read()).decode('utf-8') 35 36 # レスポンスのjsonに箱詰め 37 response.append({'id':json['id'], 'result' : img_base64}) 38 39 return jsonify(response) 40 41if __name__ == '__main__': 42 app.run(host='0.0.0.0',port=5000,debug=True)
swift
1struct JsonSample : Codable{ 2 var id : String 3 var Image : String 4 } 5let json = ["id" : "0","Image" : base64String!]//base64Stringに画像のbase64に変換したものが代入されています。 6 7 8let listUrl = "http://127.0.0.1:5000/image/" 9 10guard let url = URL(string: listUrl) else { return } 11 12URLSession.shared.dataTask(with: url) { (json, response, error) in 13if error != nil { 14 print(error!.localizedDescription) 15 } 16 guard let json = json else { return } 17 let data = try? JSONDecoder().decode(JsonSample.self, from: json) 18 print(data as Any) 19 }.resume()
試したこと
vscodeで試した結果うまく処理が帰ってきました。
SwiftでWebAPIにGETリクエストしてみた。参考
いろいろprintする変数を変えましたが、nilしか返ってきませんでした。
補足情報(FW/ツールのバージョンなど)
macbook: xcode :vscodeを使用
swiftに関しては、初学者なので少し説明を初歩的な部分からしていただくと助かります!
回答1件
あなたの回答
tips
プレビュー