OPENCV 学习例程(1)图片读写 色彩空间转换

程序完成图片读写 图片显示 图片色彩空间转换

</pre><pre name="code" class="cpp">#include <string>
#include<opencv2\opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(){
	/*read image*/
	string imgAdress = "E:\\Workspace\\VisualStudioWorkspace\\lena.jpg";//使用了图片的绝对地址
	Mat img = imread(imgAdress,IMREAD_COLOR);
	Mat imgGray = imread(imgAdress, IMREAD_GRAYSCALE); //可以使用第二个参数选择读入图片后的存储格式

	/*check*/
	if (img.empty()){
		cout << "Can't read or can't open the image!";
		return -1;
	}

	/*show the original image */
	//namedWindow("My lena image", WINDOW_AUTOSIZE);//creats a new window, not necessary
	imshow("My lena image", img);
	
	/*real copy <span style="font-family: Arial, Helvetica, sans-serif;">会有两份独立的data </span>*/
	Mat imgCopy;
	img.copyTo(imgCopy);  //or     
	//imgCopy = img.clone();

	//convert color
	Mat imgBGR2GRAY, imgRGB2Gray;
	cvtColor(img, imgBGR2GRAY, COLOR_BGR2GRAY);
	cvtColor(img, imgRGB2Gray, COLOR_RGB2GRAY);// wrong 出来的图片很相似 但是并不正确
	
	imshow("imgGray",imgGray);
	imshow("imgBGR2GRAY", imgBGR2GRAY);
	imshow("imgRGB2Gray", imgRGB2Gray);
	
	/*write image*/
	imwrite("imgBGR2GRAY.jpg", imgBGR2GRAY);
	imwrite("imgRGB2Gray.jpg", imgRGB2Gray);
	
	waitKey();
	return 0;

}
 

Mat - 基本图像容器

 Mat 是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针。

Mat A, C;                                 // 只创建信息头部分

A = imread(argv[1], CV_LOAD_IMAGE_COLOR);// 这里为矩阵开辟内存

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

C = A;                                    // 赋值运算符

以上代码中的所有Mat对象最终都指向同一个数据矩阵。

 

Mat F = A.clone();

Mat G;

A.copyTo(G);

真实地拷贝,A、F、G矩阵是独立的,并不会相互影响。

 

总结:

OpenCV函数中输出图像的内存分配是自动完成的(如果不特别指定的话)。

使用OpenCV的C++接口时不需要考虑内存释放问题。

赋值运算符和拷贝构造函数(ctor )只拷贝信息头。

使用函数 clone() 或者 copyTo() 来拷贝一副图像的矩阵。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值