0

アプリケーションでオプティカル フローの計算に OpenCV の cvCalcOpticalFlowBM を使用しようとしています。私は次のようなことをしています:

IplImage* velX1 = cvCreateImage(cvSize((beforeGray->width - blockSize.width + shiftSize.width)/shiftSize.width, (beforeGray->height - blockSize.height + shiftSize.height)/shiftSize.height), IPL_DEPTH_32F,1);
IplImage* velY1 = cvCreateImage(cvSize((beforeGray->width - blockSize.width + shiftSize.width)/shiftSize.width, (beforeGray->height - blockSize.height + shiftSize.height)/shiftSize.height), IPL_DEPTH_32F,1);
IplImage* velX2 = cvCreateImage(cvSize((beforeGray->width - blockSize.width + shiftSize.width)/shiftSize.width, (beforeGray->height - blockSize.height + shiftSize.height)/shiftSize.height), IPL_DEPTH_32F,1);
IplImage* velY2 = cvCreateImage(cvSize((beforeGray->width - blockSize.width + shiftSize.width)/shiftSize.width, (beforeGray->height - blockSize.height + shiftSize.height)/shiftSize.height), IPL_DEPTH_32F,1);

cvSetZero(velX1);
cvSetZero(velY1);
cvSetZero(velX2);
cvSetZero(velY2);

cvCalcOpticalFlowBM(beforeGray, afterGray, 1, blockSize, shiftSize, range, 0, velX1, velY1);

beforeGray と afterGray は、同じサイズの IPL_DEPTH_8U シングル チャネル イメージです。しかし、最後の行が実行されると、次の例外が発生します。

OpenCV Error: Null pointer (NULL array pointer is passed) in cvGetMat

OpenCV 2.4 を使用していますが、これが機能しない理由がわかりません。すべての入力引数が null でないことをデバッガーで確認しました。誰かが何か考えましたか?

4

1 に答える 1

0

引数を間違えたようです。次のようにする必要があります。

cvCalcOpticalFlowBM(beforeGray, afterGray, blockSize, shiftSize, range, 0, velX1, velY1);
于 2013-03-07T11:52:25.130 に答える