我正在做一個視頻監控項目。
我看不到從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