例子:打开图片并显示。打开图片利用Qt的标准文件对话框,第一步是利用OpenCV创建窗口并显示。

  添加一个Button,转到信号槽添加代码:

  1. using namespace cv;
    Mat image;
  2.  
  3. void Widget::on_openButton_clicked()
  4. {
  5. QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),
  6. ".",tr("Image Files (*.png *.jpg *.bmp)"));
  7. qDebug()<<"filenames:"<<fileName;
  8. image = cv::imread(fileName.toAscii().data());
  9. cv::namedWindow(fileName.toAscii().data(),CV_WINDOW_AUTOSIZE)); //display use a new window
  10. cv::imshow((fileName.toAscii().data(), image);
  11. }

  代码例子来源:http://www.cnblogs.com/emouse/archive/2013/03/29/2988717.html

1、QFileDialog::getOpenFileName()  函数原型如下:

  QString QFileDialog::getOpenFileName(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0)

  第一个参数是父窗口指针,第二个参数是文件对话框的标题,第三个参数是文件对话框的初始路径,如果这个路径包含某个文件,那么这个文件会被处于选中状态。第4个和第5个参数的含义是Only files that match the given filter are shown. The filter selected is set to selectedFilter.第4个好理解,第5个什么意思没看懂。

 2、cv::imread()   函数原型是 Mat imread(const string& filename, int flags),就是从图片文件读取文件。

这是一个opencv库中的c++接口,官方介绍文档在这里http://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html

3、QString::toAscii() 和QByteArray::data()函数

 前者的函数原型是QByteArray QString::toAscii() const 定义是Returns an 8-bit representation of the string as a QByteArray.

后者的函数原型是char * QByteArray::data() 定义是Returns a pointer to the data stored in the byte array. The pointer can be used to access and modify the bytes that compose the array. The data is '\0'-terminated, i.e. the number of bytes in the returned character string is size() + 1 for the '\0' terminator.

上面的应用例子就是QString转char*。

4、cv::cvnamedWindow()和cv::imshow是opencv里的两个常用函数。

  cvnamedWindow用于创建一个命名窗口,imshow用于在命名窗口上显示图像。

  

 补充:上面这个例子在嵌入式QT环境下还是运行不了的。出现的出错情况如下:

 

 上面这里的错误,大概是cvnamedWindow等函数是没有被实现。还不能使用。  出了问题,就换个解决方式。用下面这个函数。函数来源还是上面推荐的那个网站。

  1. //Mat->QImage
  2. static QImage ConvertToQImage(cv::Mat &mat)
  3. {
  4. QImage img;
  5. int nChannel=mat.channels();
  6. if(nChannel==)
  7. {
  8. cv::cvtColor(mat,mat,CV_BGR2RGB);
  9. img = QImage((const unsigned char*)mat.data,mat.cols,mat.rows,QImage::Format_RGB888);
  10. }
  11. else if(nChannel==||nChannel==)
  12. {
  13. img = QImage((const unsigned char*)mat.data,mat.cols,mat.rows,QImage::Format_ARGB32);
  14. }
  15.  
  16. return img;
  17. }

 

Qt & opencv 学习(二)的更多相关文章

  1. Qt & opencv 学习(一)

    Qt也没怎么系统学过,opencv也没系统学过.慢慢来,一步一步弄清楚吧. 天嵌科技有个文档,先去看这个文档,主要是开发环境的配置.文档名字就是QT应用程序开发手册-20150918.pdf.在QT里 ...

  2. Qt Lighthouse学习(二),就是QPA(Qt Platform Abstraction) 项目的名字

    上一次关注Qt Lighthouse是在6月初,可是现在都8月底了.时间真快... Lighthouse 是 QPA(Qt Platform Abstraction) 项目的名字,它使得将Qt移植到新 ...

  3. opencv学习笔记(二)寻找轮廓

    opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...

  4. 项目实战:Qt+OpenCV大家来找茬(Qt抓图,穿透应用,识别左右图区别,框选区别,微调位置)

    前言   本项目的出现理由只是笔者的一个念头,于是利用专业Qt和Opencv相关的知识开发一个辅助工具,本文章仅用于Qt和Opencv结合的学习.   Demo演示效果          运行包下载地 ...

  5. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  6. opencv学习笔记(一)IplImage, CvMat, Mat 的关系

    opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...

  7. 开发环境配置--Ubuntu+Qt4+OpenCV(二)

    同系列文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV(三 ...

  8. 开始QT+OpenCV学问

    最近一个月.由于超声造影软件工具做.因此,开始接触OpenCV.使用OpenCV的话.除了图像处理,其它功能都非常弱.所以又開始学习MFC. 从原先的.net C#编程环境一下变成MFC还真有点不习惯 ...

  9. OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波

    http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...

随机推荐

  1. 【Luogu】P3381最小费用最大流模板(SPFA找增广路)

    题目链接 哈  学会最小费用最大流啦 思路是这样. 首先我们有一个贪心策略.如果我们每次找到单位费用和最短的一条增广路,那么显然我们可以把这条路添加到已有的流量里去——不管这条路的流量是多大,反正它能 ...

  2. BZOJ 4719 [Noip2016]天天爱跑步 ——树链剖分

    一直以为自己当时是TLE了,但是再看发现居然WA? 然后把数组扩大一倍,就A掉了.QaQ 没什么好说的.一段路径分成两段考虑,上升的一段深度+时间是定值,下降的一段深度-时间是定值,然后打标记统计即可 ...

  3. BZOJ 2179 FFT快速傅立叶 ——FFT

    [题目分析] 快速傅里叶变换用于高精度乘法. 其实本质就是循环卷积的计算,也就是多项式的乘法. 两次蝴蝶变换. 二进制取反化递归为迭代. 单位根的巧妙取值,是的复杂度成为了nlogn 范德蒙矩阵计算逆 ...

  4. BZOJ 1297: [SCOI2009]迷路 [矩阵快速幂]

    Description windy在有向图中迷路了. 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1. 现在给出该有向图,你能告诉windy总共有多少种不同 ...

  5. P1582 倒水 (二进制)

    题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒 ...

  6. 洛谷 [P3834] 可持久化线段树(主席树)

    主席树可以存储线段树的历史状态,空间消耗很大,一般开45n即可 #include <iostream> #include <cstdio> #include <cstri ...

  7. UVa10234 Race

    递推,设有i个人排在第一名,剩下的人排在后面,方案有f[i]种,则f[i]=sum(c[n][i]*f[n-i]) 1<=i<=n /*by SilverN*/ #include<a ...

  8. Yii 之视图布局

    控制器代码: //设置的布局文件 public $layout = 'common'; public function actionAbout(){ $data = array('page_name' ...

  9. WAMP本地环境升级php版本--第二次尝试

    wamp 环境下 php5.6.25 升级php7.1.17 实践 本文参考:https://www.cnblogs.com/hubaohua1588/p/6884146.html来进行操作. 1.从 ...

  10. 12/10 C语言程序设计竞赛 后五题

    Title(题目) 小朋友顺逆报数 Problem ID(题目编号) (题目添加成功后由系统自动生成) Time Limit(运行时间限制) S(秒) Memory Limit(内存限制) MByte ...