[解決済み] OpenCV/Pythonでカメラパラメータを設定する
質問
私はThorlabsのUSBカメラ(DC1545M)でOpenCV(2.4)とPython(2.7.3)を使っているのですが、どうすればいいですか?
私はビデオストリームでいくつかの画像分析を行っており、ビデオストリームからカメラパラメータのいくつかを変更できるようにしたいと思います。 混乱させているのは、カメラのプロパティの一部を変更することはできても、すべてを変更することはできないということです。
Pythonのcv2バインディングを使用したコードです。
import cv2
#capture from camera at location 0
cap = cv2.VideoCapture(0)
#set the width and height, and UNSUCCESSFULLY set the exposure time
cap.set(3,1280)
cap.set(4,1024)
cap.set(15, 0.1)
while True:
ret, img = cap.read()
cv2.imshow("input", img)
#cv2.imshow("thresholded", imgray*thresh2)
key = cv2.waitKey(10)
if key == 27:
break
cv2.destroyAllWindows()
cv2.VideoCapture(0).release()
参考までに、第一引数の cap.set() コマンドの最初の引数は、以下に示すカメラのプロパティの列挙を参照しています。
0. CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
1. CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
2. CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file
3. CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
4. CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
5. CV_CAP_PROP_FPS Frame rate.
6. CV_CAP_PROP_FOURCC 4-character code of codec.
7. CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
8. CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
9. CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
10. CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
11. CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
12. CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
13. CV_CAP_PROP_HUE Hue of the image (only for cameras).
14. CV_CAP_PROP_GAIN Gain of the image (only for cameras).
15. CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
16. CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
17. CV_CAP_PROP_WHITE_BALANCE Currently unsupported
18. CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
(コメントしたMarkus Weberが指摘しているように、OpenCV 4では、プロパティ名から "CV"を削除する必要があることに注意してください、例えば、以下のようになります。
cv2.CV_CAP_PROP_FRAME_HEIGHT -> cv2.CAP_PROP_FRAME_HEIGHT
)
私の質問です。
python/opencvでカメラの露光時間(または他のカメラパラメータ)を設定することは可能でしょうか?
そうでない場合、これらのパラメータを設定するためにどのように行けばよいのでしょうか?
注:これを行う方法を示すカメラメーカーにより提供されたC++コードがありますが、私はC++の専門家ではないので、どんなpythonベースのソリューションでもありがたく思います。
前もってありがとうございます!
どのように解決するのですか?
すべてのパラメータがすべてのカメラでサポートされているわけではありません。実際、それらはOpenCVライブラリの最も厄介な部分の一つです。アンドロイドカメラ、USBカメラ、プロ用カメラなど、それぞれのカメラの種類によって、パラメータを変更するためのインタフェースが異なります。OpenCVのコードには、できるだけ多くのパラメータをサポートするための分岐がありますが、もちろんすべての可能性をカバーできるわけではありません。
あなたができることは、あなたのカメラドライバを調査し、OpenCV用のパッチを書いてcode.opencv.orgに送ることです。こうすることで、あなたが他の人の仕事を楽しむのと同じように、他の人もあなたの仕事を楽しむことができるのです。
カメラがあなたの要求をサポートしていない可能性もあります - ほとんどのUSBカムは安価でシンプルです。おそらく、そのパラメータは修正するために利用できないだけです。
カメラが特定のパラメータをサポートしていることが確かで (カメラメーカーがいくつかのコードを提供していると言っています)、OpenCV をいじりたくない場合は、そのサンプルコードを C++ で boost::python でラップして Python で利用できるようにすることが可能です。そして、それを使って楽しんでください。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?