当前位置: 首页>编程语言>正文

visual studio opencv读取图片路径 opencv如何读取图片

OpenCV包含了大量的机器视觉处理算法,class="superseo">Qt具有良好的交互界面优势。通过OpenCV完成底层算法,用Qt完成上层的应用接口OpenCV与Qt就是这样的完美组合。前面经过对Qt近两周的学习,算是对Qt有个小小认识,想着边学边做,把opencv也用起来,就有了这篇文章,其实现思路网上很多博友都已经说过,这里就总结一下思路:

1. Mat Image  = cv::imread…… //opencv读取图像;

2.opencv图像数据类型Mat,转换成Qt的QImage;(Ps:opencv的图像三基色通道的顺序是BGR,要先把BGR转换成RGB)

3.采用Qt中QLabel显示图像。(QLabel的功能就是提供一个文本或图像的显示)

看起来是很简单的一个过程,但是在编译时就有如下错误

D:\Qtdemo\openImage\mainwindow.cpp:32: error: undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'

google搜索了很多,总结有两种解决办法

1. For openCV 3.X you need to add library imgcodecs to project  就是说opencv3以上的图像编解码是imgcodecs负责,要包含这个lib文件

2. 在CMakeLists.txt加入安装OpenCV的版本号: 将

find_package(OpenCV REQUIRED) 

更改为

find_package(OpenCV 3  REQUIRED)
 该文作者认为:是之前链接过2.4的库,新装3以后,还在原来的位置找,找不到,这时候加上3就可以找到了。

在.pro中,我是把所有lib文件都添加了的,那么很可能就是2了,但是我在source中找到CMakeLists.txt,其中查找并没有“find_package( OpenCV REQUIRED )”这一栏

visual studio opencv读取图片路径 opencv如何读取图片,visual studio opencv读取图片路径 opencv如何读取图片_c,第1张

然后看了其他的一些方法,比如把CMakeLists.txt中VERSION修改成3.2.0(我装的opencv版本是3.2.0)

 

visual studio opencv读取图片路径 opencv如何读取图片,visual studio opencv读取图片路径 opencv如何读取图片_opencv_02,第2张

然后还参考一个博客

把 新目录D:\QtOpenCV中 的 build 从 1) 替换成 2)                                

       1)opencv 解压缩的include                                           2)  CMake编译成功创建的目标路径中的include

visual studio opencv读取图片路径 opencv如何读取图片,visual studio opencv读取图片路径 opencv如何读取图片_重启_03,第3张

               

visual studio opencv读取图片路径 opencv如何读取图片,visual studio opencv读取图片路径 opencv如何读取图片_opencv_04,第4张

  

最后重启电脑,打开这个工程,运行,依然是同样的错误!此时我已经是一个头两个大了,求教于xx ,只把

image = cv::imread(fileName.toUtf8().data());

这行代码中的cv::去掉(因为我前面定义了 using namespace cv),运行,竟然就可以了!

我说这样就可以了?!然后我把using namespace cv去掉,重新加上cv:: 也是可以的!这。。。太奇怪了。。花了大半天没解决,这样就解决了,xx似乎不惊讶,说不定程序自身也是有"bug"吧。

真的是不可思议,我姑且认为:前面所做的都没有白费。

最后贴上运行的结果!

 

visual studio opencv读取图片路径 opencv如何读取图片,visual studio opencv读取图片路径 opencv如何读取图片_Qt_05,第5张

看到还有提供QLabel 和 QGraphicsView 两种切换方式显示图片,所以自己也试了下,


QStackedWidget 提供了多页面的切换布局,一次只能看到一个界面ui->stackedWidget->setCurrentIndex(0); ui->stackedWidget->setCurrentIndex(1);


visual studio opencv读取图片路径 opencv如何读取图片,visual studio opencv读取图片路径 opencv如何读取图片_opencv_06,第6张

GraphicsView显示效果,水平的滚动条没有显示出来,应该进行显示设置,效果会更好。

 

 


https://www.xamrdz.com/lan/5u81963614.html

相关文章: