はじめに
前回なんちゃってズームのスクリプトを書きました。touch-sp.hatenablog.com
今回は16:9の入力を1:1に切り取ります。切り取り位置を変更することによってカメラを動かしたようになります。
Web会議などでは1:1で問題ありません。切り取り位置を調整することでつねに自分を真ん中に映せます。
Pythonスクリプト
import cv2 leftside = 280 w=1280 h=720 cap = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')) cap.set(cv2.CAP_PROP_FRAME_WIDTH, w) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, h) while True: ret, frame = cap.read() frame = frame[:, leftside:leftside+720, :] cv2.imshow('demo', frame) k = cv2.waitKey(1) & 0xFF if k == 27: break elif k == ord('a'): if leftside < 560: leftside += 70 elif k == ord('d'): if leftside > 0: leftside -= 70 cap.release() cv2.destroyAllWindows()
スクリプトの解説
1:1に切り取る
たったの1行です。frame = frame[:, leftside:leftside+720, :]
キーボード入力で切り取り位置を変更する
「a」「d」で変更「Esc」で終了
k = cv2.waitKey(1) & 0xFF if k == 27: break elif k == ord('a'): if leftside < 560: leftside += 70 elif k == ord('d'): if leftside > 0: leftside -= 70