USBカメラ(UVC)の制御

Last-modified: 2010-12-04 (土) 15:54:17

目次

today: ?
yesterday: ?
total: ?


ファイル構成と簡単な説明

  • Makefile
  • data/
  • excvInit.h
  • histogram.c
  • libwebcam.c
  • main.c

main関数の流れ

/*><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><
	main.c
	Time-stamp: <2010-12-04 15:43:03 kato>

	libwebcamの使い方例
	(1) 明るさ調節
	(2) 後処理
	(3) 初期化
	(4) Qcam Orbit AFでのみ仕様確認済み
	><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><*/

#include
#include
#include
#include
#include

extern int excvHistogram(CHandle hDevice, IplImage *src);// (1)
extern CHandle webcamInitCamParam(char *videoName, int videoNum);// (2)
extern void webcamReleaseDevice(CHandle hDevice);// (3)
extern void excvPanTilt(CHandle hDevice, int key, int camAngle);// (4)

int standard(char *filename);

int main(int argc, char** argv){
	char* filename = argc == 2 ? argv[1] : (char*)"./data/img/lena.jpg";
	standard(filename);
	return 0;
}

int standard(char *filename){
	int key;
	CvSize imgSize = {640, 480};
	CvCapture* cap;
	IplImage* src = cvCreateImage(imgSize, IPL_DEPTH_8U, 3);
	IplImage* gray = cvCreateImage(imgSize, IPL_DEPTH_8U, 1);
	CHandle hDevice = 0;// webcam.h

  if((hDevice = webcamInitCamParam("video0", 0)) == -1)
    return -1;
	if(!(cap = cvCaptureFromCAM(0))){
		puts("Camera is not found !!");
		return -1;
	}
	cvNamedWindow("USB camera capture", 0);// make window

	while(1){
		src = cvQueryFrame(cap);// USB camera capture
		cvCvtColor(src, gray, CV_RGB2GRAY);
    excvHistogram(hDevice, gray);
		cvShowImage("USB camera capture", src);// show capture image

		key = cvWaitKey(10);
		if(key == 27 || key == 'q')
			break;
		if(key == 'l')
                   webcamPanTilt(hDevice, WC_LEFT, 1024);
		if(key == 'r')
                   webcamPanTilt(hDevice, WC_RIGHT, 1024);
	}

      webcamReleaseDevice(hDevice);
	cvReleaseImage(&src);
	cvReleaseImage(&gray);
	cvReleaseCapture(&cap);
	return 0;
}

備考

Qcam Orbit AFの場合,[l]で左,[r]で右を向く
それ以外のカメラはexcvHistogramで明るさを調節するだけ
初期化と後処理を忘れないこと

Logicool以外でも動作したら報告してほしいです.