从摄像头批量截取图片

 1 // hand gesture sampler.cpp : Defines the entry point for the console application.
 2 
 3 //
 4 #include "stdafx.h"
 5 #include <string>
 6 #include <iostream>
 7 
 8 #include <opencv2\opencv.hpp>
 9 
10 using namespace cv;
11 using namespace std;
12 
13 Mat src, src2Save;
14 char cfileName[1024];
15 string sfileName = "";
16 Size outputSize = Size(320, 240);
17 
18 template <typename T> string NumberToString ( T Number );
19 void help();
20 
21 
22 int main()
23 {
24     help();
25 
26     namedWindow("monitor", 1);
27 
28     VideoCapture cap(0);
29 
30     if(cap.isOpened())
31     {
32         int c = 0;
33         int num = 0;
34         bool sampleState = false;
35 
36         //main loop
37         while( c != 27)
38         {
39             if(c == 98) sampleState = true;
40             if(c == 115) sampleState = false;
41 
42             //get webcam image
43             cap >> src;
44 
45             //resize image to 320*240
46             if(src.cols > 320 || src.rows > 240) resize(src, src2Save, outputSize, 0.5, 0.5, 1);
47 
48             //show image
49             imshow("monitor", src2Save);
50 
51             //save image            
52             sfileName = "f:/documents/Downloads/hand gesture pictures/" + NumberToString(num) + ".png";
53             if(sampleState) 
54             { 
55                 imwrite(sfileName, src2Save); 
56                 num ++;
57                 cout<<"\nCollected Sample Number - " << num << endl;
58             }            
59 
60             //exit loop
61             c = waitKey(10);
62         }
63     }
64     else
65         //end app
66         return -1;
67 
68     return 0;
69 }
70 
71 template <typename T>
72   string NumberToString ( T Number )
73   {
74      ostringstream ss;
75      ss << Number;
76      return ss.str();
77   }
78 
79 void help()
80 {
81     printf(
82         "========================\n"
83         "========================\n"
84         "Programme to collect a good number of hand gestures from video streams.\n"
85         "Usage:\n"
86         "(s)top - stop sampling\n"
87         "(b)egin - begin sampling\n"
88         "ESC - exit the programme\n"
89         "==========================\n"
90         "==========================\n"
91         );
92 }

 

posted @ 2012-05-08 17:12  xiangtailiang  阅读(353)  评论(0编辑  收藏  举报