現在、データセット作成のためOpenCVを使い画像を撮影して大量に保存しようと考えています。また、私が作成したDeep Learningでは正方形の画像を使用するため、撮影する画像も正方形になるようにしようと考えました。フレームサイズの変更は以下のURLを参考にしました。
参考URL
作成したコードは以下の通りです。
import cv2 import os import datetime def save_frame_camera_cycle(device_num, dir_path, basename, cycle, ext='jpg', delay=1, window_name='frame'): cap = cv2.VideoCapture(device_num) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 300) # カメラ画像の横幅 cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 300) # カメラ画像の縦幅 if not cap.isOpened(): return os.makedirs(dir_path, exist_ok=True) base_path = os.path.join(dir_path, basename) n = 0 while True: ret, frame = cap.read() cv2.imshow(window_name, frame) if cv2.waitKey(delay) & 0xFF == ord('q'): break if n == cycle: n = 0 cv2.imwrite('{}_{}.{}'.format(base_path, datetime.datetime.now().strftime('%Y%m%d%H%M%S%f'), ext), frame) n += 1 cv2.destroyWindow(window_name) save_frame_camera_cycle(0, './data/', 'camera_capture_cycle', 1)
上記のプログラムを動かしたところ、画像自体は正方形ではありませんでした。カメラ画像の枠設定とは保存する画像の枠設定ということではないのでしょうか。また、cv2.resize以外で正方形にする方法はないのでしょうか。教えていただけると助かります。
回答1件
あなたの回答
tips
プレビュー