私はビデオ監視のプロジェクトを行っています。
RGBからグレーへの変換が見えません。私は灰色の黒い窓を得る。
問題を手伝ってもらえますか?
また、現在のフレームと前のフレームの違いをどのように取得できますか?
ありがとうございました。 IlanOpenCV RGB to gray
#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++ OpenCVのAPIを学ぶ必要があります。独自のデストラクタ(および参照カウンタ)を持つ画像にcv :: Matオブジェクトを使用すると、手動でIplImageを解放する必要はありません。*あなたのコードでは忘れてしまったものです。 – Eric
この質問に回答した場合は、近くのチェックボックスをオンにして公式の回答を選択することを検討してください。そうでない場合は、独自の回答を追加することを検討してください。 – karlphillip