> opencvライブラリを使い、読み込んだ画像又は動画を保存、表示する際に必ず、90°回転してしまいます。
それはどの画像、動画でもそうなるのでしょうか?
それとも特定の画像や動画ファイルでだけその現象が起きるのでしょうか?
後者の場合、画像に回転の情報が入っている可能性があります。
例えば、画像が jpeg であれば、orientation の項目を確認してみてください。「Exif orientation」で検索すると情報が出てきます。
前提・実現したいこと
読み込んだ画像をそのままの向きで保存したい。
発生している問題・エラーメッセージ
opencvライブラリを使い、読み込んだ画像又は動画を保存、表示する際に必ず、90°回転してしまいます。
回転等の処理は全く加えていません。
該当のソースコード
python3
1# 変換処理ループ 2while end_flag == True: 3 # グレースケール変換 4 g_frame = cv2.cvtColor(c_frame, cv2.COLOR_BGR2GRAY) 5 6 # フレーム表示 7 cv2.imshow(ORG_WINDOW_NAME, c_frame) 8 cv2.imshow(GRAY_WINDOW_NAME, g_frame) 9 10 # フレーム書き込み 11 rec.write(g_frame) 12 13 #フレームを画像として保存 14 count =("{:0=6}".format(counter)) #0埋め 15 # count = str({:0=6}.format(counter)) 16 cv2.imwrite("create_graydata/"+count+".png", g_frame) 17 counter += 1 18 19 # 次のフレーム読み込み 20 end_flag, c_frame = org.read() 21 22# 終了処理 23cv2.destroyAllWindows() 24org.release() 25rec.release()
mp4,avi,png,jpgに対しては、全て回転しました。
正常に動作した試しはありません。
また、グレースケールだけでなく、別の処理でも同様の回転が発生してしまいます。
exif orientationは知らなかったので調べてみたいと思います。
情報ありがとうございます。
すべてのファイルに対して、回転してしまうということですと、ちょっと原因はわからないですね。
少なくとも質問のコードに画像が回転してしまうような問題があるようには見えません。
orgやrecはどういったライブラリですか?自作ライブラリですか?
予想ですが、org.read(), rec.write()のどちらかで画像内の画素アクセスの縦横の順番が変わっているからかと思いましたので、ご確認してみてください。
90度回転してしまうのなら、すこしてまですが90度回転する処理を加えたらどうですか?
https://qiita.com/matsu_mh/items/54b09273aef79ae027bc
あなたの回答
tips
プレビュー