私は Code::Blocks で C の OpenCV 2.4.11 を使用しています。特に、O'Reilly の本 Learning OpenCV を使用しています。流域アルゴリズムのセクションは少し短かったので、少し遊んで、正確にどのように機能するかを確認してみようと思いました。ただし、関数を呼び出すたびに、次のエラーが発生します。
OpenCV エラー: cvWatershed でサポートされていない形式または形式の組み合わせ (32 ビット、1 チャネルの出力画像のみがサポートされています)
これまでの私のプログラムは非常に単純です。
int main(int arg, int arg2) {
//open windows
cvNamedWindow("Input", 1 );
cvNamedWindow("Markings", 1 );
//load images
IplImage* input = cvLoadImage("ActualDoorPhoto.jpg", CV_LOAD_IMAGE_COLOR);
assert(input != NULL);
IplImage* markingstemp = cvLoadImage("ActualMarkingTest.jpg", CV_LOAD_IMAGE_COLOR);
assert(markingstemp != NULL);
//prepare markings
IplImage* markings = cvCreateImage(cvGetSize(markingstemp), 32, 1);
CvMat* markmat = cvCreateMat(input->width, input->height, CV_32FC1);
cvWatershed(input, markmat);
cvShowImage("Input", input);
cvShowImage("Markings", markings);
cvWaitKey(0);
return 0;
}
cvWatershed の 2 番目の引数として、マーキングとマークマットの両方、および他のいくつかのもの (特に、マーキングステンプの輪郭が描かれたマーキング) を入れようとしましたが、毎回同じエラーが発生します。誰が私が間違っているのか教えてもらえますか?