私はvs2010(Cでコーディング)でOpenCV2.1を使用しています。rgb画像から青い平面を抽出した後、それにdctを適用して、変換された行列を取得しました。
cvDCT(source,destination,CV_DXT_FORWARD);
正常に構築されていますが、どういうわけか実行されていません
エラーは、「freqDomain.exeの0x75c89617での未処理の例外:Microsoft C ++例外:メモリ位置0x001ce35cでのcv::Exception」のようなものです。
出力画像のcvarrayの種類の設定に誤りがあると思います。IPL_DEPTH_8Uに設定しても大丈夫ですか、それともフロートにする必要がありますか?
これは私のコードスニペットです:
int main()
{
IplImage *input,*output,*b,*g,*r;
input=cvLoadImage("dolphin.jpg");
int width,height;
width=input->width;
height=input->height;
b=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);
g=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);
r=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);
cvSplit(input,b,g,r,NULL);
cvNamedWindow("blue",CV_WINDOW_AUTOSIZE);
IplImage *b_dct,*g_dct,*r_dct;
b_dct=cvCreateImage(cvSize(width,height),8,1);
g_dct=cvCreateImage(cvSize(width,height),8,1);
r_dct=cvCreateImage(cvSize(width,height),8,1);
cvDCT(b,b_dct,0); // doubt??
cvShowImage("blue",b_dct);
...