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

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

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

  代码例子来源: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等函数是没有被实现。还不能使用。  出了问题,就换个解决方式。用下面这个函数。函数来源还是上面推荐的那个网站。

//Mat->QImage
static QImage ConvertToQImage(cv::Mat &mat)
{
QImage img;
int nChannel=mat.channels();
if(nChannel==)
{
cv::cvtColor(mat,mat,CV_BGR2RGB);
img = QImage((const unsigned char*)mat.data,mat.cols,mat.rows,QImage::Format_RGB888);
}
else if(nChannel==||nChannel==)
{
img = QImage((const unsigned char*)mat.data,mat.cols,mat.rows,QImage::Format_ARGB32);
} return img;
}

 

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】P3116会议时间(拓扑排序,DP)

    题目链接 本题使用拓扑排序来规划DP顺序.设s[i][j]表示i步是否能走到j这个点,e[i][j]表示i步是否能走到j这个点——用第二条路径.因为要满足无后效性和正确性,只有第i个点已经全部更新完毕 ...

  2. HDU——1242Rescue(BFS+优先队列求点图最短路)

    Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到

    接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于 ...

  4. msp430项目编程46

    msp430综合项目---监控系统46 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结

  5. Python入门--11--自定义函数

    使用def定义自定义函数 举个栗子: def myfristFunction(): print "we are 伐木累!" #输入myfristFunction() 会输出:we ...

  6. 让Mac OS X下的终端像Linux那样拥有丰富多彩的颜色显示

    我们知道Linux下的命令行终端具有颜色回显功能,用ls命令查看目录或者文件,终端会以不同的颜色来区分:使用vim命令行编辑器打开脚本或其他源程序代码会以语法高亮模式显示.而Mac OS X下的终端却 ...

  7. hzwer与逆序对

    codevs——4163 hzwer与逆序对 貌似这个题和上个题是一样的((⊙o⊙)…)  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解       题目 ...

  8. ros使用罗技f710无线控制手柄

    参考:blog.csdn.net/hcx25909/article/details/9042469 罗技F710无线控制手柄ROS下使用说明 安装手柄相关的包和驱动 sudo apt-get inst ...

  9. raspberry pi系统安装

    1.格式化SD卡,用SDFormatter 2.解压下载的操作系统 3.复制操作系统到SD卡(要放在根目录,把最外面的文件夹路径去掉) 4.把SD卡插入raspberry pi,接上电源 5.在启动界 ...

  10. Set 技巧之一

    我们知道set中 用set<int,int>S; S.lower_bound(x): 查找Set中 第一个>=x的数,返回结果是指针. S.upper_bound(x):查找Set中 ...