fixed problem with non 4:3 cameras (ticket #142)
This commit is contained in:
parent
873b72edd9
commit
108fc3f4fe
@ -2893,7 +2893,7 @@ public:
|
||||
protected:
|
||||
void init();
|
||||
|
||||
int index;
|
||||
int index, width, height;
|
||||
IplImage* frame;
|
||||
static videoInput VI;
|
||||
};
|
||||
@ -2911,6 +2911,7 @@ CvCaptureCAM_DShow::CvCaptureCAM_DShow()
|
||||
{
|
||||
index = -1;
|
||||
frame = 0;
|
||||
width = height = -1;
|
||||
}
|
||||
|
||||
void CvCaptureCAM_DShow::close()
|
||||
@ -2921,6 +2922,7 @@ void CvCaptureCAM_DShow::close()
|
||||
index = -1;
|
||||
cvReleaseImage(&frame);
|
||||
}
|
||||
width = height = -1;
|
||||
}
|
||||
|
||||
// Initialize camera input
|
||||
@ -2977,27 +2979,28 @@ double CvCaptureCAM_DShow::getProperty( int property_id )
|
||||
|
||||
bool CvCaptureCAM_DShow::setProperty( int property_id, double value )
|
||||
{
|
||||
int width = 0, height = 0;
|
||||
|
||||
switch( property_id )
|
||||
{
|
||||
case CV_CAP_PROP_FRAME_WIDTH:
|
||||
width = cvRound(value);
|
||||
height = width*3/4;
|
||||
break;
|
||||
case CV_CAP_PROP_FRAME_HEIGHT:
|
||||
height = cvRound(value);
|
||||
width = height*4/3;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
if( width != VI.getWidth(index) || height != VI.getHeight(index) )
|
||||
if( width > 0 && height > 0 )
|
||||
{
|
||||
VI.stopDevice(index);
|
||||
VI.setupDevice(index, width, height);
|
||||
if( width != VI.getWidth(index) || height != VI.getHeight(index) )
|
||||
{
|
||||
VI.stopDevice(index);
|
||||
VI.setupDevice(index, width, height);
|
||||
}
|
||||
width = height = -1;
|
||||
return VI.isDeviceSetup(index);
|
||||
}
|
||||
return VI.isDeviceSetup(index);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user