[英]rotate video opencv C++
我试图将摄像机的视频旋转90度,我尝试使用cvTranspose
和cvFlip
但结果是:
Unhandled exception at 0x752bc41f in CameraStero.exe: Microsoft C++ exception: cv::Exception at memory location 0x0021faf8..
这是我的代码。
#include <opencv\cv.h>
#include <opencv\highgui.h>
using namespace cv;
int main(int argc, char** argv)
{
VideoCapture cap1;
cap1.open(0);
cap1.set(CV_CAP_PROP_FPS, 0.55);
cap1.set(CV_CAP_PROP_FRAME_WIDTH, 800.0);
cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 800.0);
Mat img1, img2;
for(;;){
CvCapture* cap;
IplImage* frame;
cap = cvCreateCameraCapture( 0 );
cvGrabFrame(cap);
frame=cvRetrieveFrame(cap);
cvTranspose(frame, frame);
cvFlip(frame, frame, 1);
cvShowImage("Img1", frame);
if(waitKey(1)=='q')
break;
}
}
有任何建议来更正代码吗?
您正在混合使用OpenCV c ++和c接口。 这里是如何在OpenCV / C中完成的。
#include <opencv\cv.h>
#include <opencv\highgui.h>
int main(int argc, char** argv)
{
CvCapture* cap = cvCreateCameraCapture( 0 );
for(;;)
{
IplImage* frame=cvQueryFrame(cap);
cvTranspose(frame, frame);
cvFlip(frame, frame, 1);
cvShowImage("Img1", frame);
if(waitKey(30)=='q')
break;
}
cvReleaseCapture(cap);
}
您应该将捕获参数保留为默认值,因为如果相机不支持您的设置,可能会导致错误。 因此,删除以下几行:
cap1.set(CV_CAP_PROP_FPS, 0.55); cap1.set(CV_CAP_PROP_FRAME_WIDTH, 800.0); cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 800.0);
或者如果确实需要更改宽度和高度,则应确保要设置的宽度/高度应小于默认值。 以下代码也将起作用:
cap1.set(CV_CAP_PROP_FPS, 0.55); cap1.set(CV_CAP_PROP_FRAME_WIDTH, 320); cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
就像@SRF所说的,您正在混合使用OpenCV C / C ++接口,因此您可以使用
cap = cvCreateCameraCapture( 0 );
要么
cap1.open(0);
,但不能两者兼而有之。
如果要在一个窗口中显示捕获的图像,则应首先通过以下方式创建窗口:
cv::namedWindow("Img1", 1);
不要忘记return 0;
在int main()
。 尽管某些编译器没有对此进行限制,但是您应该像往常一样执行此操作。
修复所有这些问题后,代码应如下所示(在我的PC上运行正常):
int main()
{
VideoCapture cap1;
cap1.open(0);
cap1.set(CV_CAP_PROP_FPS, 0.55);
cap1.set(CV_CAP_PROP_FRAME_WIDTH, 320);
cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
cv::namedWindow("Img1", 1);
Mat frame;
for(;;)
{
Mat frame;
cap1 >> frame;
transpose(frame, frame);
flip(frame, frame, 1);
imshow("Img1", frame);
if(waitKey(1)=='q')
break;
}
cap1.release();
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.