回过头来看opencv第一篇·Mat

官网:

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/core/table_of_content_core/table_of_content_core.html#table-of-content-core

从真实世界中获取数字图像有很多方法,比如数码相机、扫描仪、CT或者磁共振成像。无论哪种方法,我们(人类)看到的是图像,而让数字设备来“看“的时候,则是在记录图像中的每一个点的数值。

 

Mat A, C;                                 // 只创建信息头部分
A = imread(argv[1], CV_LOAD_IMAGE_COLOR); // 这里为矩阵开辟内存

Mat B(A);                                 // 使用拷贝构造函数

C = A;                                    // 赋值运算符

所有Mat对象最终都指向同一个也是唯一一个数据矩阵。不同的对象只是访问相同数据的不同途径而已。

可以创建只引用部分数据的信息头。比如想要创建一个感兴趣区域( ROI

Mat D (A, Rect(10, 10, 100, 100) ); // using a rectangle
Mat E = A(Range:all(), Range(1,3)); // using row and column boundaries 

// Rect(int_x,int_y,int width,int height) //所选区域左上角的坐标值,以及矩形的宽高
    Mat ImageROI=srcImage(Rect(10, 10, 100, 100));
    Mat ImageROI2= srcImage(Range(50,50+90), Range(100,100+100)); //Range 是一段连续序列
    imshow("ROI图",ImageROI);
    imshow("ROI图",ImageROI2);

想要拷贝矩阵本身 ,使用函数 clone() 或者 copyTo() 来拷贝一幅图像的矩阵

Mat F = A.clone();
Mat G;
A.copyTo(G);

RGB颜色空间,它的基色是红色、绿色和蓝色,有时为了表示透明颜色也会加入第四个元素 alpha (A)。

图像保存至硬盘 (using imwrite)

/* simple API for reading/writing data */

(void) cvSave( const char* filename, const void* struct_ptr,
                    const char* name CV_DEFAULT(NULL),
                    const char* comment CV_DEFAULT(NULL),
                    CvAttrList attributes CV_DEFAULT(cvAttrList()));

(void*) cvLoad( const char* filename,
                     CvMemStorage* memstorage CV_DEFAULT(NULL),
                     const char* name CV_DEFAULT(NULL),
                     const char** real_name CV_DEFAULT(NULL) );

对于cvLoad 和 cvSave的应用实例,以后用上了在添加进来。。。

其实可以用C/C++中的fopen 操作来实现

确定你想看的那个数据变量,要先分配内存,用 文件指针  FILE* 

fopen() 打开流 
fclose() 关闭流 

fprintf() 按格式输出到流 
fscanf() 从流中按格式读取

字符串 含义 
"r" 以只读方式打开文件 
"w" 以只写方式打开文件 
"a" 以追加方式打开文件 
"r+" 以读/写方式打开文件,如无文件出错 
"w+" 以读/写方式打开文件,如无文件生成新文件

例如

long long arr[300];

arr[i] = temp;

FILE *filePath;
     filePath = fopen("D:\\test.txt", "w+"); 
     for(int i = 0; i < 300 ; i++)
     {
         fprintf(filePath,"[ %d ] = %d \n", i, arr[i]);
     }
     fclose(filePath);

实现temp数据变量以txt保存。

猜你喜欢

转载自blog.csdn.net/naozhuo0615/article/details/82715691