opencv:Assertion failed (type == CV_32FC1 || type == CV_64FC1) in cv::dct

使用opencv中的dct()函数进行离散余弦变换时出现如下错误:

OpenCV Error: Assertion failed (type == CV_32FC1 || type == CV_64FC1) in cv::dct, file .......

原问题处:

    Mat src = imread("son.jpg", 0); 
    if(src.empty())
    {
        cout << "the image is not exist" << endl;  
        return -1;
    }
    resize(src, src, Size(32, 32));
    Mat srcDCT; 
    dct(src, srcDCT);

后打印出src.type()发现为0即CV_8U,而非要求的CV_32F或CV_64F故引发错误。

使用convertTo()将图像类型转换为CV_32F。更改后问题消除:

    Mat src = imread("E:\\image\\image\\image\\person.jpg", 0); 
    if(src.empty())
    {
        cout << "the image is not exist" << endl;  
        return -1;
    }
    resize(src, src, Size(32, 32));
    src.convertTo(src, CV_32F, 1.0/255.0);
    //cout<<src.type()<<"\n";
    Mat srcDCT; 
    dct(src, srcDCT);

矩阵类型:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值