void on_change(int pos)
{
Track();
}
int main(int argc, char **argv)
{
int key; // キー入力用の変数
CvCapture *capture = NULL; // カメラキャプチャ用の構造体
// カメラを初期化する
if ((capture = cvCreateCameraCapture(-1)) == NULL) {
// カメラが見つからなかった場合
printf("カメラが見つかりません\n");
return -1;
}
frameImage = cvQueryFrame(capture); // キャプチャ画像用IplImage
hsvImage = cvCreateImage(cvGetSize(frameImage), IPL_DEPTH_8U, 3);
convexHullImage =
cvCreateImage(cvGetSize(frameImage), IPL_DEPTH_8U, 3);
skinImage = cvCreateImage(cvGetSize(frameImage), IPL_DEPTH_8U, 1);
temp = cvCreateImage(cvGetSize(frameImage), IPL_DEPTH_8U, 1);
label = cvCreateImage(cvGetSize(frameImage), IPL_DEPTH_16S, 1);
// ウィンドウを生成する
createWindows();
// トラックバーを生成
cvCreateTrackbar("HMAX", "Track", &hmax, 255, on_change);
cvSetTrackbarPos("HMAX", "Track", 26);
cvCreateTrackbar("SMAX", "Track", &smax, 255, on_change);
cvSetTrackbarPos("SMAX", "Track", 255);
cvCreateTrackbar("VMAX", "Track", &vmax, 255, on_change);
cvSetTrackbarPos("VMAX", "Track", 255);
cvCreateTrackbar("HMIN", "Track", &hmin, 255, on_change);
cvSetTrackbarPos("HMIN", "Track", 1);
cvCreateTrackbar("SMIN", "Track", &smin, 255, on_change);
cvSetTrackbarPos("SMIN", "Track", 51);
cvCreateTrackbar("VMIN", "Track", &vmin, 255, on_change);
cvSetTrackbarPos("VMIN", "Track", 0);
// ジャンケン判定感度を生成
cvCreateTrackbar("グー最大", "Track", &rockmax, 100, on_change);
cvSetTrackbarPos("グー最大", "Track", 100);
cvCreateTrackbar("チョキ最大", "Track", &scissormax, 100, on_change);
cvSetTrackbarPos("チョキ最大", "Track", 85);
cvCreateTrackbar("パー最大", "Track", &papermax, 100, on_change);
cvSetTrackbarPos("パー最大", "Track", 70);
cvCreateTrackbar("グー最小", "Track", &rockmin, 100, on_change);
cvSetTrackbarPos("グー最小", "Track", 85);
cvCreateTrackbar("チョキ最小", "Track", &scissormin, 100, on_change);
cvSetTrackbarPos("チョキ最小", "Track", 70);
cvCreateTrackbar("パー最小", "Track", &papermin, 100, on_change);
cvSetTrackbarPos("パー最小", "Track", 50);
while (1) {
frameImage = cvQueryFrame(capture);
on_change(hmax);
//on_change1(rockmax);
// 画像を表示する
//cvShowImage(windowNameCapture, frameImage);
cvShowImage(windowNameSkin, skinImage);
cvShowImage(windowNameConvexHull, convexHullImage);
//printf("ゴミ:%d\n", kukei_count - yubi_count);
//kukei_count = 0;
yubi_count = 0;
// キー入力判定
key = cvWaitKey(1);
if (key == 'q') {
// 'q'キーが押されたらループを抜ける
break;
} else if (key == 'c') {
printf("撮影します\n");
sprintf(filename, "%s%d.bmp", path, count);
//printf("%s",filename);
//cvSaveImage("c:\\output.bmp",skinImage);
cvSaveImage(filename, skinImage);
printf("撮影しました\n");
count++;
}
}
// キャプチャを解放する
cvReleaseCapture(&capture);
// メモリを解放する
cvReleaseImage(&hsvImage);
cvReleaseImage(&skinImage);
cvReleaseImage(&temp);
cvReleaseImage(&label);
cvReleaseImage(&convexHullImage);
cvReleaseImage(&dst_img_subunn);
cvReleaseImage(&dst_img);
// ウィンドウを破棄する
//cvDestroyWindow(windowNameCapture);
cvDestroyWindow(windowNameSkin);
cvDestroyWindow(windowNameConvexHull);
//cvDestroyWindow(windowNameSub);
cvDestroyWindow(windowNameFit);
return 0;
}
最終更新:2010年02月09日 10:09