您好我正在尝试使用opencv的imread函数来读取图像,如链接(http://opencv.itseez.com/doc/tutorials/introduction/display_image/display_image.html#display-image)。我有VS2010与64位Windows 7.每次我尝试我收到错误消息“没有图像数据”,但我想要读取的图像与代码在同一个文件夹中。有人可以帮我看看如何读取具有imread功能的图像?我的代码如下:
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
Mat image;
image = imread("al.jpg");
if(argc != 2 || !image.data )
{
printf("no image data \n");
return -1;
}
namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
imshow("Display Image", image);
waitKey(0);
return 0;
}
答案 0 :(得分:5)
您可以使用
加载图片IplImage *img=cvLoadImage("Image_Name);
然后你可以使用
将其转换为cv :: MatMat mat(img);
答案 1 :(得分:2)
我在VSX5和 OpenCV 2.3 的WinXP上遇到了同样的问题。似乎OpenCV的C ++接口在Windows上运行不佳。我也遇到了imread()
的问题,该问题返回了NULL
个数据。
我使用OpenCV的 C接口来解决问题。有关详情,请查看Reading and Writing Images and Video。
答案 2 :(得分:0)
取出argc != 2
测试。你没有使用传递给你的程序的参数,所以它是多余的。如果argc
实际上不是eaual到2,那么您的程序在进入!image.data
测试之前就会终止。
编辑:我只看了你链接的代码示例。它加载一个图像,其名称在命令行上传递给程序。这就是argc != 2
测试的原因。你肯定想要解决这个问题,因为你很可能没有在命令行上传递文件名,所以你的argc
是1,因此测试总是会失败。
答案 3 :(得分:0)
OpenCV支持图像格式Windows位图(bmp),可移植图像格式(pbm,pgm,ppm)和Sun栅格(sr,ras)。
答案 4 :(得分:0)
我遇到同样的问题,这可能来自VS 10中的VS项目编译。
在visual studio 2010中: 转到项目 - &gt;属性 - &gt;字符集 - &gt;使用多字节而不是unicode。
答案 5 :(得分:0)
我遇到了和你一样的问题。 OpenCV2.3的 C ++接口不起作用,某些功能必须转换为C版本。
但最后,我发现了**的问题
这是因为使用CMake 编译OpenCV源代码时的项目属性与您当前的项目属性不同。(可能是您的OpenCV&#39; sll和libs是从Internet下载的,这些可能与其他奇怪的属性编译。)
所以我检查了我的CMake生成的OpenCV源代码项目,我找到了项目属性, C / C ++ - &gt;代码生成,运行时库 多线程调试DLL(/ MDd)
然后,我更改了当前项目中的相应属性,我的项目运行良好。同时,OpenCV错误的其他C ++接口也很好地解决了。
答案 6 :(得分:-1)
在Visual C ++中设置公共语言运行时支持(/ clr)。 它有效。