如何解决OpenCV中C++函数imread读取图片的问题-创新互联

这篇文章主要为大家展示了“如何解决OpenCV中C++函数imread读取图片的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决OpenCV中C++函数imread读取图片的问题”这篇文章吧。

公司主营业务:网站设计制作、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出怀远免费做网站回馈大家。

今天在用OpenCV实验Image Pyramid的时候发现一个奇怪的问题,就是利用C++函数imread读取图片的时候返回的结果总是空,而利用C函数cvLoadImage时却能读取到图像。代码如下:

//环境:VS2010 + OpenCV 2.3.1
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
using namespace cv;
Mat src, dst, tmp;
char* window_name = "Pyramids Demo";
int _tmain(int argc, _TCHAR* argv[])
{
 printf("\n Zoom In-Out demo \n");
 printf("-------------------- \n");
 printf("*[u]-> Zoom in \n");
 printf("*[d]-> Zoom out \n");
 printf("*[ESC]-> Close program \n\n");
 src = imread("D:\\fruits.jpg");
 if(!src.data)
 {
  printf("No data!--Exiting the program \n");
  return -1;
 }
 tmp = src;
 dst = tmp;
 namedWindow(window_name,CV_WINDOW_AUTOSIZE);
 imshow(window_name,dst);
 while(true)
 {
  int c;
  c = waitKey(10);
  if((char)c == 27)
  {
   break;
  }
  if((char)c == 'u')
  {
   pyrUp(tmp,dst,Size(tmp.cols * 2,tmp.rows * 2));
   printf("** Zoom In:Image x 2\n");
  }
  else if((char)c == 'd')
  {
   pyrDown(tmp,dst,Size(tmp.cols / 2,tmp.rows / 2));
   printf("**Zoom Out:Image / 2\n");
  }
  imshow(window_name,dst);
  tmp = dst;
 }
 return 0;
}

程序很简单,就是直接调用Imgproc中的两个C++函数pyrUp和pyrDown来实现图像金字塔,程序的详细解释可参见https://www.jb51.net/article/108378.htm。但在实现的过程中发现imread始终读取不了图像数据和cvLoadImage却可以。几经考证,发现的确是由于库关联的问题。也就是在Debug模式下应该选择带'd'的lib,在Release模式下就选择不带'd'的lib。而实际我们在配置OpenCV环境的时候往往图方便将Debug和Release的目录都一起加了进去,再修改起来也比较麻烦。所以这时候最简单的办法就是在程序的开始加上:

#pragma comment(lib,"opencv_highgui231d.lib")

来告诉程序将采用Debug版本的库函数。

实验结果如下:

如何解决OpenCV中C++函数imread读取图片的问题

以上是“如何解决OpenCV中C++函数imread读取图片的问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联网站建设公司行业资讯频道!

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

文章名称:如何解决OpenCV中C++函数imread读取图片的问题-创新互联
网页网址:https://www.cdcxhl.com/article22/digdcc.html

成都网站建设公司_创新互联,为您提供云服务器App开发微信公众号网站制作网站策划Google

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设