2

エラーを見つけるために半日を費やしました。ついに私はこの奇妙なことを見つけました:

コードmethod1の一部で、次のことを行います。

Mat prevgray, gray, flow, cflow, frame;
cvtColor(frame1, prevgray, CV_BGR2GRAY);
cvtColor(frame2, gray, CV_BGR2GRAY);
calcOpticalFlowFarneback(prevgray, gray, flow, 0.5, 3, 15, 3, 5, 1.2, 0);
...

他の部分、method2では、新しいマットを作成して表示しようとします。

Mat result(480,640, CV_8UC3);
result.at<cv::Vec3b>(y,x)[0] = b;
result.at<cv::Vec3b>(y,x)[1] = g;
result.at<cv::Vec3b>(y,x)[2] = r;
namedWindow( "jojw", CV_WINDOW_AUTOSIZE );
imshow("jojw",result);
waitKey(0);

結果は次の画像です。

ここに画像の説明を入力してください

ただし、calcOpticalFlowFarnebackメソッドを使用しない場合。私はそれをコメントアウトするか、コードがそれに到達する前に戻ります。結果の画像はOKです。

何が起こっていますか?

私を助けてください

4

1 に答える 1

1

自分で解決しました。このばかげたエラーを取得するために12時間費やしました。そのエラーですか?私はまだ理解していませんが、解決策はゼロマットを作成することです:

Mat result = Mat::zeros(480,640, CV_8UC3);
于 2012-12-22T23:14:46.683 に答える