2

OpenCV2.4.3を使用してフォアグラウンド検出を行っています。バイナリである結果の前景をRGB画像に変換したいと思います。私のコードは次のようなものです:

cv::VideoCapture cap;
cap.open ( "test.avi " );
cv::Mat img;
cv::Mat finalForeground;
cv::Mat element( 3, 3, CV_8U, cv::Scalar(1) );
cv::gpu::GMG_GPU gmgGpu

gmgGpu.initialize ( cv::Size ( 1600, 1200 ) );
cv::gpu::GpuMat gpuForeground;
cv::Mat rgbForeground;

for ( int i = 0; i < 500; i ++ )
{
    cap >> img; 
    cv::gpu::GpuMat gpuImg ( img );    
    gmgGpu.operator()(gpuImg, gpuForeground);
    gpuForeground.download ( finalForeground);
    cv::morphologyEx ( finalForeground, finalForeground, CV::MORPH_CLOSE, element );
    cvCvtColor ( finalForeground, rgbForeground, CV_GRAY2BGR );
 }

次に、次のようなエラーが発生しました。

エラーC2664:'cvCvtColor':パラメータ2を'cv::Mat'から'CvArr*'に変換できません

この変換を実行できるユーザー定義の変換演算子がないか、演算子を呼び出すことができません

誰かがこのエラーを処理するための提案をすることができますか?ありがとう。

4

1 に答える 1

4

おそらく、C と C++ の表記法を混在させるべきではありません。

cvCvtColorの代わりにcv::CvtColorを使用してみてください

2 番目の質問についてですが、入力と出力の両方で 3 つのチャネルを持つ cv::CvtColor を使用していますか?

于 2012-11-09T12:40:47.683 に答える