OpenCVのカメラを起動するとデフォルトでは640×480ですが、1:1の比率にすることはできますか?
python
1 2import nnabla as nn 3import numpy as np 4import cv2 5import os 6import sys 7import nnc 8 9# 設定値 10DEVICE_NUM = 0 # 利用するカメラに割り当てられているデバイス番号を指定 11NNPPATH = r'results.nnp' # 学習済みモデルのパス 12IMG_SAVE_DIR = 'camera_data' # カメラから取得した画像を保存するディレクトリのパス 13IMG_PREFIX = 'camera_capture' # 保存画像名のプレフィックス 14EXT = 'png' # 保存する画像の形式 15 16 17def get_camera_img(dir_path, basename, delay=1, window_name='frame'): 18 global imgcnt 19 cap = cv2.VideoCapture(DEVICE_NUM, cv2.CAP_DSHOW) 20 21 if not cap.isOpened(): 22 print("[Error] カメラデバイスの読み込みに失敗しました。") 23 return 24 25 os.makedirs(dir_path, exist_ok=True) 26 base_path = os.path.join(dir_path, basename) 27 28 while True: 29 ret, frame = cap.read() 30 cv2.imshow(window_name, frame) 31 key = cv2.waitKey(delay) & 0xFF 32 if key == ord('p'): 33 img_path = '{}_{}.{}'.format(base_path, imgcnt, EXT) 34 cv2.imwrite(img_path, frame) 35 imgcnt += 1 36 return img_path 37 elif key == ord('q'): 38 break 39 40 cv2.destroyWindow(window_name) 41 sys.exit() 42 43 44# 利用するプロジェクトによって処理を変える箇所() 45def exec_nnc(img_path): 46 class_names = [chr(ord('A') + i) for i in range(26)] 47 img_size = 250 48 x=nn.Variable((1,3,img_size,img_size)) 49 img = cv2.imread(img_path) 50 img = cv2.resize(img, (img_size, img_size)).transpose(2,0,1) 51 x = nn.Variable((1, ) + img.shape) 52 x.d = img.reshape(x.shape) 53 y = nnc.network(x, test=True) 54 y.forward() 55 56 print("******************") 57 print("入力画像: ", img_path) 58 print("推論結果: ", y.d) 59 print("一番確率が高いクラス: ", np.argmax(y.d), "番目") # 0 - 25 60 print("一番確率が高いアルファベット: ", class_names[np.argmax(y.d)]) 61 62 63 64if os.path.isfile(NNPPATH): 65 nn.load_parameters(NNPPATH) 66 imgcnt = 1 67 68 while True: 69 img_path = get_camera_img(IMG_SAVE_DIR, IMG_PREFIX) 70 71 exec_nnc(img_path)