学校のコンピュータで私のプログラムが動作しない理由を理解できません。おそらく、設定上の問題です。私はUbuntuの9.10で動作し、ここでOpenCV ERROR:入力引数の形式が一致しません
のOpenCV 2.2の最後のバージョンでは、コードです:
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
int main (int argc, char *argv[])
{
double a[9]={1,0,-1,2,0,-2,1,0,-1};
double b[9]={1,2,1,0,0,0,-1,-2,-1};
IplImage* img=cvLoadImage(argv[1], 0);
if(!img){
printf("could not load image file: %s\n",argv[1]);
exit(0);
}
IplImage* dst=cvCreateImage(cvGetSize(img),IPL_DEPTH_64F,1);
IplImage* dst1=cvCreateImage(cvGetSize(img),IPL_DEPTH_64F,1);
IplImage* dst2=cvCreateImage(cvGetSize(img),IPL_DEPTH_64F,1);
IplImage* dst_f=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
CvMat k1 = cvMat(3,3,CV_64FC1,a);
CvMat k2 = cvMat(3,3,CV_64FC1,b);
cvFilter2D(img ,dst1, &k1,cvPoint(-1,-1));
cvFilter2D(img ,dst2, &k2,cvPoint(-1,-1));
cvPow(dst1, dst1, 2.0);
cvPow(dst2, dst2, 2.0);
cvAdd(dst1, dst2, dst, NULL);
cvPow(dst, dst, 0.5);
cvConvertImage(dst,dst_f,CV_CVTIMG_FLIP);
cvThreshold(dst_f,dst_f,127,255,CV_THRESH_BINARY);
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin", 100, 100);
cvShowImage("mainWin",img);
cvNamedWindow("Sobel", CV_WINDOW_AUTOSIZE);
cvShowImage("Sobel",dst_f);
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImage(&dst_f);
return 0;
}
これはターミナルに戻り、問題を理解するために私を助けてください
を実行しているときに何です。OpenCV ERROR: Formats of input arguments do not match() in function cvFilter2D, cvfilter.cpp(2617) Terminating the application... called from cvUnregisterType, cxpersistence.cpp(4933) Terminating the application... called from cvUnregisterType, cxpersistence.cpp(4933) Terminating the application... called from cvUnregisterType, cxpersistence.cpp(4933) Terminating the application... called from cvUnregisterType, cxpersistence.cpp(4933) Terminating the application... called from cvUnregisterType, cxpersistence.cpp(4933) Terminating the application... called from cvUnregisterType, cxpersistence.cpp(4933) Terminating the application... called from cvUnregisterType, cxpersistence.cpp(4933) Terminating the application... called from cvUnregisterType, cxpersistence.cpp(4933) Terminating the application... called from cvUnregisterType, cxpersistence.cpp(4933) Terminating the application...
私にはOK見える - 私が提案することができる唯一のことは、など、CV_32FC1にIPL_DEPTH_32FとCV_64FC1に、フロートにIPL_DEPTH_64Fをあなたのダブルスを変更すなわち、32ビットではなく64ビットの山車使用してみてくださいです –
あなたの答えPaulありがとう:) あなたが示唆したように私は深さを変更し、私は最終的な画像のためにIPL_DEPTH_8Uを維持しました!それは私の問題を解決しなかった、私は同じメッセージを得る。 – bulldo