tutu_cloud_sky 2021-10-16 17:47 采纳率: 100%
浏览 30
已结题

FFTW使用与for傅里叶水印

概述:(opencv,Mat转float 用fftw_execute()执行出错)fftw_plan_dft_2d中的input数据是Mat.data==>已经用Mat.convertTo 转换过了(CV_32F)

根据要求:要对彩色图片加傅里叶水印进行优化,目前的效率是:4M的jpg图片加水印耗时30秒,个人采用线程并行的方式对于效率进行了优化,但是只是优化了3倍没有达到要求的6倍。按照现在的思路,将opencv::dft 替换成 fftw::fftw_plan_dft_2d /fftwf_plan r2c = fftwf_plan_dft_r2c_2d

cv::Mat WaterMarkText::GefFft(cv::Mat& input, void* mallo)
{
    
    int iCol = input.cols;
    int iRow = input.rows;

    fftw_plan plan_f = fftw_plan_dft_2d(iRow, iCol, (fftw_complex*)input.data, (fftw_complex*)input.data, FFTW_FORWARD, FFTW_ESTIMATE);
    //convertU1ToF1(img_src_data, realInput, iCol, iRow);
    //fftwf_plan r2c = fftwf_plan_dft_r2c_2d(iRow, iCol, (float*)input.data, realInput, FFTW_PATIENT);
    
    fftw_execute(plan_f);//出现问题

    fftw_destroy_plan(plan_f);
    return input;
}

还没走到这里已经出现问题。
fftwf_plan_dft_c2r_2d的实现 
cv::Mat WaterMarkText::GefIFft(cv::Mat& input, void* mallo)
{
    int iCol = input.cols;
    int iRow = input.rows;
    fftwf_plan c2r = fftwf_plan_dft_c2r_2d(iRow, iCol, (fftwf_complex *)input.data, (float*)input.data, FFTW_PATIENT);
    fftwf_execute(c2r);
    fftwf_destroy_plan(c2r);
    return input;
}

  • 写回答

3条回答 默认 最新

  • 有问必答小助手 2021-10-18 14:43
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


    因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日
  • 修改了问题 10月16日
  • 创建了问题 10月16日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)