qq136473625 2018-04-14 11:08 采纳率: 0%
浏览 877
已结题

Qt中的Label无法显示傅里叶变换的幅度谱,求大佬解答!!!

用的OpenCV+QT,OpenCV可以正常显示幅度谱但放在Qt上的label就显示不了,估计是跟通道有关,有大佬知道怎么处理吗?转通道之类?贴一下代码
Mat srcImage, Mat amplitude, Mat phase在类中定义并传进去
imshow("amplitude", amplitude);这句在opencv中可以打开
我横线下面部分放在QT label上显示幅度谱,但没有现象,估计是跟幅度谱的通道有关?大佬们知道幅度谱的通道吗?

void imageProcessSystem::fourierTrans(Mat srcImage, Mat amplitude, Mat phase)//Mat srcImage,
{
cvtColor(srcImage, srcImage, CV_BGR2GRAY);//!!!需要先转灰度
Mat padded;
int m = getOptimalDFTSize(srcImage.rows);//返回给定向量尺寸经DFT变换后的最优尺寸大小
int n = getOptimalDFTSize(srcImage.cols);
copyMakeBorder(srcImage, padded, 0, m - srcImage.rows, 0, n - srcImage.cols, BORDER_CONSTANT, Scalar::all(0));
Mat planes[] = { Mat_(padded), Mat::zeros(padded.size(), CV_32F) };
Mat complexI;
merge(planes, 2, complexI); //将planes融合合并成一个多通道数组complexI
dft(complexI, complexI); //进行傅里叶变换
split(complexI, planes);
magnitude(planes[0], planes[1], planes[0]);//planes[0] = magnitude,计算二维矢量的幅值
amplitude = planes[0];
phase = planes[1];
amplitude += Scalar::all(1);//所有标量加一
log(amplitude, amplitude);
amplitude = amplitude(Rect(0, 0, amplitude.cols&-2, amplitude.rows&-2));
int cx = amplitude.cols / 2;
int cy = amplitude.rows / 2;
Mat q0(amplitude, Rect(0, 0, cx, cy)); //左上角图像划定ROI区域
Mat q1(amplitude, Rect(cx, 0, cx, cy)); //右上角图像
Mat q2(amplitude, Rect(0, cy, cx, cy)); //左下角图像
Mat q3(amplitude, Rect(cx, cy, cx, cy)); //右下角图像
//变换左上角和右下角象限
Mat tmp;
q0.copyTo(tmp);
q3.copyTo(q0);
tmp.copyTo(q3);
//变换右上角和左下角象限
q1.copyTo(tmp);
q2.copyTo(q1);
tmp.copyTo(q2);
normalize(amplitude, amplitude, 0, 1, CV_MINMAX);//数组的数值被平移或缩放到一个指定的范围
cv::resize(amplitude, amplitude, cvS);
imshow("amplitude", amplitude);
//————————————————————————————
am = QImage((const unsigned char*)(amplitude.data),
amplitude.cols, amplitude.rows,
amplitude.cols*amplitude.channels(),
QImage::Format_RGB888);
ui.label_3->setPixmap(QPixmap::fromImage(am));
}

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-04-14 16:24
    关注

    统一把图形输出到位图里,然后加载

    http://blog.51cto.com/whylinux/1877629

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能