#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
#pragma comment(lib,"opencv_highgui249d.lib")
int main( int argc, char *argv[])
{
/*if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return 0;
}*/
Mat image;
image =imread("D:\\My.jpg", 2); // Read the file //
printf("%d\n",image.size);
printf("%s\n",argv[1]);
printf("%s\n",argv[0]);
if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return 0;
}
namedWindow( "Display window", CV_WINDOW_NORMAL ); // Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
Opencv关于imread读取图像的问题
opencv在读取图像时有两种方法,第一种是通过cvLoadImage来读取,这是个c函数,函数返回IplImage*指针。在opencv2.0以上版本中,可以直接通过imread函数将图像读入Mat矩阵中,但是是有些注意事项的。
imread读入图像时,如果直接传入本地图像名,结果返回的是空指针,也就是找不到文件。
Mat img_1 = imread("3.jpg", CV_LOAD_IMAGE_GRAYSCALE );
出现这种现象的原因,网上有很多种说法,最合理的解释就是路径的编码方式不同导致。有人建议将源码文件转换成本人电脑系统下地编码方式,但是这种过程比较复杂,简单的方式就是加入绝对路径,但是注意在“\”的时候必须加入双“\\”以便编译器将“\”转义。
对于本地文件,则可以直接在文件名前面加上“.\\”即可。
Mat img_1 = imread(".\\3.jpg", CV_LOAD_IMAGE_GRAYSCALE );
这样imread函数就可以读入图像数据了。