这三个细节,楼上的朋友,你在操作的时候,有没有注意到。 一般是在这边出错。
1、如果是64位的计算机,必须添加64位的lib文件
2、Qt开发的程序一般需要借助qmake生成makefile文件。由于qmake在解析路径的时候不能识别空格,因此需要确保OpenCV的安装路径中不能包含空格(C:\Program Files\OpenCV是不行的)。直接安装在C:\OpenCV位置。
3、最近在做有关OpenCV 方面的东西,由于GUI程序看起来比较和谐。于是用到了QT
目前来说学习OpenCV方面的书籍比较少,尤其是是老掉牙的那本《学习OpenCV》。
不过其中的有些算法还比较好。但是这本书主要应用C所以对于 OpenCV2.X 都不太合适
个人觉得学习OpenCV2.x的书是《OpenCV.2.Computer.Vision.Application.Programming.Cookbook》
里面就提到了有关OpenCV+QT的例子,而且都是C++版本
目前这本书只有英文版,英文还好的可以去看一看。
一般来说把图片直接显示到QT窗体上是用个label
代码
void MainWindow::displayMat(const cv::Mat &image)
{
QImage img= QImage((const unsigned char*)(image.data),
image.cols,image.rows,QImage::Format_RGB888);
// display on label,这里的img_label就是窗体上的label
ui->img_label->setPixmap(QPixmap::fromImage(img));
// resize the label to fit the image
ui->img_label->resize(ui->img_label->pixmap()->size());
}
不过这里要注意的就是那个Format,今天就出了个这样的问题,在算2值图像的时候想显示到窗体上,就出了问题。可是直接用 cv::imshow(const string& , cv::Mat);都没问题。
后来发现问题出现在QImage::Format这里。
对于RGB图像QImage::Format_RGB888没问题,但是对于2值图像的话,由于是单通道图像,就必须使用QImage::Format_Indexed8 了
参考网页:
http://blog.163.com/lucien_cc/blog/static/130290562201022743126906/http://blog.chinaunix.net/uid-21222282-id-1829230.html http://cooljstyle.diandian.com/post/2012-08-08/40032584560