好的我有这个代码
IplImage *frame;
CvCapture *capture = cvCaptureFromCAM(0);
frame = cvQueryFrame(capture);
cvSaveImage("sample.jpg",frame);
cvReleaseImage(&frame);
保存图像,但保存该图像后,我想释放该相机以便关闭。现在相机一直亮着,直到程序停止,我想在cvReleaseImage(&frame);
我试过
cvReleaseCapture(安培;捕获)
但是它给了我一个运行时错误:the application has requested the Runtime to terminate in an unusual way
和这个错误
OpenCV错误:错误的参数(无法识别或不支持的数组类型) 在未知功能,文件...... \ modules \ core \ src \ array.cpp,行 996
答案 0 :(得分:3)
我不完全确定。但请尝试删除cvReleaseImage调用。
我记得cvQueryImage方法检索到的图像指针始终指向同一个地址。所以我的猜测是这个图像数据是由捕获管理的。所以当你释放捕获时释放它。
编辑:
在这里找到: http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_highgui.htm
函数cvQueryFrame从相机或视频文件中抓取一个帧, 解压缩并返回它。这个功能只是一个组合 一次调用中的cvGrabFrame和cvRetrieveFrame。返回的图像应该 不得由用户发布或修改。
答案 1 :(得分:0)
尝试cvReleaseCapture()
?
(30个字符。)
答案 2 :(得分:0)
我认为您正在寻找的是cvReleaseCapture。这些代码对我有用:
int main (void) {
IplImage *frame;
CvCapture *capture = cvCaptureFromCAM(0);
frame = cvQueryFrame(capture);
cvSaveImage("sample.jpg",frame);
cvReleaseImage(&frame);
cvReleaseCapture( &capture );
return 0;
}
IplImage *frame;
CvCapture *capture = cvCaptureFromCAM(0);
frame = cvQueryFrame(capture);
cvSaveImage("sample.jpg",frame);
cvReleaseImage(&frame);
cvReleaseCapture( &capture );
return 0;
}
这是一个非常简单的代码,但它应该正确终止,不会引起任何错误。