|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /**********************************************************
- Software developed by AVA ( Ava Group of the University of Cordoba, ava at uco dot es)
- Main author Rafael Munoz Salinas (rmsalinas at uco dot es)
- This software is released under BSD license as expressed below
- -------------------------------------------------------------------
- Copyright (c) 2013, AVA ( Ava Group University of Cordoba, ava at uco dot es)
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 3. All advertising materials mentioning features or use of this software
- must display the following acknowledgement:
-
- This product includes software developed by the Ava group of the University of Cordoba.
-
- 4. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY AVA ''AS IS'' AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL AVA BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ****************************************************************/
-
-
- #include <iostream>
- #include <ctime>
- #include <cstdlib>
- #include <fstream>
- #include <sstream>
- #include "raspicam_cv.h"
-
- using namespace std;
- bool doTestSpeedOnly=false;
- //parse command line
- //returns the index of a command line param in argv. If not found, return -1
- int findParam ( string param,int argc,char **argv ) {
- int idx=-1;
- for ( int i=0; i<argc && idx==-1; i++ )
- if ( string ( argv[i] ) ==param ) idx=i;
- return idx;
-
- }
- //parse command line
- //returns the value of a command line param. If not found, defvalue is returned
- float getParamVal ( string param,int argc,char **argv,float defvalue=-1 ) {
- int idx=-1;
- for ( int i=0; i<argc && idx==-1; i++ )
- if ( string ( argv[i] ) ==param ) idx=i;
- if ( idx==-1 ) return defvalue;
- else return atof ( argv[ idx+1] );
- }
-
- void processCommandLine ( int argc,char **argv,raspicam::RaspiCam_Cv &Camera ) {
- Camera.set ( cv::CAP_PROP_FRAME_WIDTH, getParamVal ( "-w",argc,argv,1280 ) );
- Camera.set ( cv::CAP_PROP_FRAME_HEIGHT, getParamVal ( "-h",argc,argv,960 ) );
- Camera.set ( cv::CAP_PROP_BRIGHTNESS,getParamVal ( "-br",argc,argv,50 ) );
- Camera.set ( cv::CAP_PROP_CONTRAST ,getParamVal ( "-co",argc,argv,50 ) );
- Camera.set ( cv::CAP_PROP_SATURATION, getParamVal ( "-sa",argc,argv,50 ) );
- Camera.set ( cv::CAP_PROP_GAIN, getParamVal ( "-g",argc,argv ,50 ) );
- Camera.set ( cv::CAP_PROP_FPS, getParamVal ( "-fps",argc,argv, 0 ) );
- if ( findParam ( "-gr",argc,argv ) !=-1 )
- Camera.set ( cv::CAP_PROP_FORMAT, CV_8UC1 );
- if ( findParam ( "-test_speed",argc,argv ) !=-1 )
- doTestSpeedOnly=true;
- if ( findParam ( "-ss",argc,argv ) !=-1 )
- Camera.set ( cv::CAP_PROP_EXPOSURE, getParamVal ( "-ss",argc,argv ) );
-
-
- // Camera.setSharpness ( getParamVal ( "-sh",argc,argv,0 ) );
- // if ( findParam ( "-vs",argc,argv ) !=-1 )
- // Camera.setVideoStabilization ( true );
- // Camera.setExposureCompensation ( getParamVal ( "-ev",argc,argv ,0 ) );
-
-
- }
-
- void showUsage() {
- cout<<"Usage: "<<endl;
- cout<<"[-gr set gray color capture]\n";
- cout<<"[-test_speed use for test speed and no images will be saved]\n";
- cout<<"[-w width] [-h height] \n[-br brightness_val(0,100)]\n";
- cout<<"[-co contrast_val (0 to 100)]\n[-sa saturation_val (0 to 100)]";
- cout<<"[-g gain_val (0 to 100)]\n";
- cout<<"[-ss shutter_speed (0 to 100) 0 auto]\n";
- cout<<"[-fps frame_rate (0 to 120) 0 auto]\n";
- cout<<"[-nframes val: number of frames captured (100 default). 0 == Infinite lopp]\n";
-
- cout<<endl;
- }
-
-
-
- int main ( int argc,char **argv ) {
- if ( argc==1 ) {
- cerr<<"Usage (-help for help)"<<endl;
- }
- if ( findParam ( "-help",argc,argv ) !=-1 ) {
- showUsage();
- return -1;
- }
-
- raspicam::RaspiCam_Cv Camera;
- processCommandLine ( argc,argv,Camera );
- cout<<"Connecting to camera"<<endl;
- if ( !Camera.open() ) {
- cerr<<"Error opening camera"<<endl;
- return -1;
- }
- cout<<"Connected to camera ="<<Camera.getId() <<endl;
-
- cv::Mat image;
- int nCount=getParamVal ( "-nframes",argc,argv, 100 );
- cout<<"Capturing"<<endl;
-
- double time_=cv::getTickCount();
-
- for ( int i=0; i<nCount || nCount==0; i++ ) {
- Camera.grab();
- Camera.retrieve ( image );
- if ( !doTestSpeedOnly ) {
- if ( i%5==0 ) cout<<"\r capturing ..."<<i<<"/"<<nCount<<std::flush;
- if ( i%30==0 && i!=0 )
- cv::imwrite ("image"+std::to_string(i)+".jpg",image );
- }
- }
- if ( !doTestSpeedOnly ) cout<<endl<<"Images saved in imagexx.jpg"<<endl;
- double secondsElapsed= double ( cv::getTickCount()-time_ ) /double ( cv::getTickFrequency() ); //time in second
- cout<< secondsElapsed<<" seconds for "<< nCount<<" frames : FPS = "<< ( float ) ( ( float ) ( nCount ) /secondsElapsed ) <<endl;
- Camera.release();
-
- }
|