マニュアルフォーカス操作をリートンさんに質問してみて、解像度設定・表示を追加。

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でピント合わせしてみることにした。

コメント

このブログの人気の投稿