[英]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.