我正在做一个视频监控项目。
我看不到从RGB到灰色的转换;我得到一个灰色的黑色窗口。
你能帮我解决这个问题吗? (附代码)
另外,如何获得当前帧和前一帧之间的差异?
非常感谢。 宜兰OpenCV RGB到灰色
#include "stdafx.h"
#include <stdio.h> // For printf
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int main()
{
int key = 0;
CvCapture* capture = cvCaptureFromAVI("macroblock.mpg");
IplImage* frame = cvQueryFrame(capture);
IplImage* gray = cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,1);
cvCvtColor(frame, gray, CV_RGB2GRAY);
if (!capture)
{
fprintf(stderr, "Cannot open AVI!\n");
return 1;
}
int fps = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
cvNamedWindow("video", CV_WINDOW_AUTOSIZE);
cvNamedWindow("grayvideo", CV_WINDOW_AUTOSIZE);
while(key != 'x')
{
frame = cvQueryFrame(capture);
if(key==27)break;
cvShowImage("video",frame);
cvShowImage("grayvideo",gray);
key = cvWaitKey(1000/fps);
}
cvDestroyWindow("video");
cvReleaseCapture(&capture);
return 0;
}
你应该学习C++的API OpenCV的。使用cv :: Mat对象的图像,它有自己的析构函数(和ref计数器),你不需要手动释放IplImage *,你忘了你的代码。 – Eric 2012-04-02 11:48:52
如果此问题已成功解答,请考虑选择正确答案,方法是单击它旁边的复选框。如果不是,请考虑添加自己的答案。 – karlphillip 2012-06-05 23:32:31