【问题标题】:compute dct in opencv using cvDCT function使用 cvDCT 函数在 opencv 中计算 dct
【发布时间】:2012-06-06 16:34:54
【问题描述】:

我正在使用 OpenCV 2.1 和 vs2010(C 编码)。从 rgb 图像中提取蓝色平面后,我对其应用 dct 以获得变换后的矩阵。

cvDCT(source,destination,CV_DXT_FORWARD);

它正在成功构建,但不知何故它没有执行

错误类似于“freqDomain.exe 中 0x75c89617 处的未处理异常:Microsoft C++ 异常:cv::Exception at memory location 0x001ce35c..”

我认为错误在于设置输出图像的 cvarray 类型。可以设置为 IPL_DEPTH_8U 还是浮动?

这是我的代码 sn-p:

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);

    ...

【问题讨论】:

    标签: c opencv watermark steganography


    【解决方案1】:

    是的,找到了解决方案 :) 问题出在源图像的数据类型上。它应该是浮动或双.. 我使用 cvConvert 函数将 unsigned int 转换为 32 位浮点值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2015-09-20
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多