マニュアルフォーカス操作をリートンさんに質問してみて、解像度設定・表示を追加。
import cv2
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 2592) #3264,
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1944) #2448,
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
print("width = " + str(width))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print("height = " + str(height))
# オートフォーカスを無効にする
cap.set(cv2.CAP_PROP_AUTOFOCUS, 0)
# マニュアルフォーカスの値を設定する
# この値を調整することでフォーカス位置を変更できます
focus_value = 0
cap.set(cv2.CAP_PROP_FOCUS, focus_value)
while True:
ret, frame = cap.read()
cv2.imshow('USB Camera', frame)
key = cv2.waitKey(1)
if key == ord('q'):
break
elif key == ord('i'):
# フォーカス距離を増やす
focus_value += 10
cap.set(cv2.CAP_PROP_FOCUS, focus_value)
print("Focus Increased: ", focus_value)
elif key == ord('d'):
# フォーカス距離を減らす
focus_value -= 10
cap.set(cv2.CAP_PROP_FOCUS, focus_value)
print("Focus Decreased: ", focus_value)
cap.release()
cv2.destroyAllWindows()
相変わらず解像度が2048x1536にしか設定できないが、オートフォーカスが切れ、マニュアルフォーカスができ、数値が190ぐらいでピントが合う。
最大解像度3264x2448の設定は先送りにして、Pythonシート検査設定用プログラムを2048x1536で手直ししてみて、数値190でピント合わせしてみることにした。
コメント
コメントを投稿