Я использую OpenCV 2.1 с vs2010 (кодирование на C). После извлечения синей плоскости из изображения rgb я применил dct к ней, чтобы получить преобразованную матрицу.вычислить dct в opencv с использованием функции cvDCT
cvDCT(source,destination,CV_DXT_FORWARD);
Он успешно строит, но как-то не выполняет
ошибки, как «исключение необработанного в 0x75c89617 в freqDomain.exe: Microsoft C++ исключения: сорт :: Exception в ячейке памяти 0x001ce35c .. "
Я думаю, что ошибка заключается в настройке типа 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);
...