python streamlit iphoneカメラでとった画像を処理

①カメラ画像をstreamlitで使用したかった、pc経由とiphone経由でことなり、pc経由では保存してあるJPGをアップロードするとうまく画像が読み込めて、iphoneのカメラでとった写真をそのまま処理にのせる事が出来なくてかなり苦戦した。その解決方法が見つかったので、記載しました。

src =st.file_uploader('画像を貼り付け')#データ型st.file_manager  img = cv2.imread('ファイルパス')#   imgはnp.ndarray型で読み込める。  これは、ファイルパス上に画像があり、パスがうまく通り、画像が読み込め処理が進み、うまくいった。                                                      

カメラの場合は、os.でパスを見ると’ファイルパス’上にあるように見えるのだが、それを読み込もうとすると存在しなく、処理が進まない為、画像自体を読み込まず、img=cv2.imread()のimgがnp.adarryである事から、読み込んだ画像をnp.adarryまで処理して渡してあげると処理が出来る。                   src  = st.file_uploader('画像を貼り付け’)                 im = Image.open(src)  #PIL.JPEIMAGEPluge型                                  img = np.array(im) #numpy.ndarray型               とすれば、cv2.imread()を使わず、numpy.ndarray型し、そのデータを使ってそのまま処理が進められる。なので、iphoneのカメラを使用する場合は、保存される系(ファイルパスから読み込む)は無視して、データ自体を処理して進めたら,出来るようになった。これで、streamlitで作ったwebアプリでカメラから処理につなげる方法一つが出来るようなった。分かれば簡単だが、1か月以上悩んだ。       

この記事が気に入ったらサポートをしてみませんか?