Updated the camera virtual interface

git-svn-id: http://find-object.googlecode.com/svn/trunk/find_object@45 620bd6b2-0a58-f614-fd9a-1bd335dccda9
This commit is contained in:
matlabbe 2011-11-24 00:00:37 +00:00
parent d3d90bc6a9
commit 708cfa9cff
2 changed files with 37 additions and 17 deletions

View File

@ -25,7 +25,7 @@ Camera::~Camera()
void Camera::stop()
{
cameraTimer_.stop();
stopTimer();
if(capture_)
{
cvReleaseCapture(&capture_);
@ -75,28 +75,43 @@ bool Camera::start()
{
if(!capture_)
{
if(!capture_)
capture_ = cvCaptureFromCAM(Settings::getCamera_deviceId().toInt());
if(capture_)
{
capture_ = cvCaptureFromCAM(Settings::getCamera_deviceId().toInt());
if(capture_)
{
cvSetCaptureProperty(capture_, CV_CAP_PROP_FRAME_WIDTH, double(Settings::getCamera_imageWidth().toInt()));
cvSetCaptureProperty(capture_, CV_CAP_PROP_FRAME_HEIGHT, double(Settings::getCamera_imageHeight().toInt()));
}
}
if(!capture_)
{
printf("Failed to create a capture object!\n");
return false;
cvSetCaptureProperty(capture_, CV_CAP_PROP_FRAME_WIDTH, double(Settings::getCamera_imageWidth().toInt()));
cvSetCaptureProperty(capture_, CV_CAP_PROP_FRAME_HEIGHT, double(Settings::getCamera_imageHeight().toInt()));
}
}
if(!capture_)
{
printf("Failed to create a capture object!\n");
return false;
}
cameraTimer_.start(1000/Settings::getCamera_imageRate().toInt());
startTimer();
return true;
}
void Camera::startTimer()
{
updateImageRate();
cameraTimer_.start();
}
void Camera::stopTimer()
{
cameraTimer_.stop();
}
void Camera::updateImageRate()
{
cameraTimer_.setInterval(1000/Settings::getCamera_imageRate().toInt());
if(Settings::getCamera_imageRate().toInt())
{
cameraTimer_.setInterval(1000/Settings::getCamera_imageRate().toInt());
}
else
{
cameraTimer_.setInterval(0);
}
}

View File

@ -20,15 +20,20 @@ public:
virtual bool start();
virtual void stop();
virtual bool isRunning() {return cameraTimer_.isActive();}
signals:
void imageReceived(const cv::Mat & image);
public slots:
void updateImageRate();
virtual void updateImageRate();
private slots:
void takeImage();
virtual void takeImage();
protected:
void startTimer();
void stopTimer();
private:
CvCapture * capture_;