0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

webカメラの画像サイズ指定が中途半端になる

Posted at

webカメラをつかって動画をとりたい

pythonとopencvをつかったら取れる!と思ったので
適当なwebカメラかってつないでみたんだけど
カメラのスペック以下のサイズでしかimshowで表示されてない気がする。

確認

webcamtest.py
# -*- coding: utf-8 -*-
import cv2
camera = cv2.VideoCapture(0)					

# 希望のセッティングにしてみる
camera.set(cv2.CAP_PROP_FPS,30);
camera.set(cv2.CAP_PROP_FRAME_WIDTH,1280);
camera.set(cv2.CAP_PROP_FRAME_HEIGHT,720);
 
while True:
	ret, frame = camera.read()         # フレームを取得
	cv2.imshow('camera', frame)        # フレームを画面に表示

	# キー操作で抜ける
	if cv2.waitKey(1) & 0xFF == ord('q'):
		break
 
camera.release()
cv2.destroyAllWindows()

結果

とりあえずこれで表示はされるんだけど、
両端切れてるし、画像も粗い。多分640x480ぐらいじゃないかな
でもファイルのプロパティとしては1280x720になってる…

Windows標準ではどうかな

ドライバが悪いのかな?とか、USBのポートが悪いのかな?とか考えて、
Windows10標準のカメラアプリで確認してみることにした。
これで希望のサイズになっていれば、悪いのはこっちのプログラムってこと。

結果

きちんとでた。こっちのプログラムの問題だな。

対策

DirectShowを使うモードでカメラを有効化する。

webcamtest.py
camera = cv2.VideoCapture(0+cv2.CAP_DSHOW)	#ここを変更	

おまけ

カメラの設定ダイアログを開く方法。
DirectShowモードになっているときに、↓のコードを実行するとダイアログが開く

cv2.set(cv2.CAP_PROP_SETTINGS,0)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?