Opencv lesson1

来源:互联网 发布:淘宝流量分配规则 编辑:程序博客网 时间:2024/04/29 23:42
#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函数就可以读入图像数据了。


0 0
原创粉丝点击