载入:
首先要声明一个表示图像的变量,在OpenCV2中,这个变量是cv::Mat类型的:
cv:;Mat image;
这句话将创建宽和高都是0的图像,可以通过cv::Mat的size()方法进行验证:
std::cout<<"size:"<<image.size().width<<","<<image.size().height<<std::endl;
声明变量之后,要进行文件的读取,解码和内存的分配:
image=cv::imread("img.jpg");
"" 内是图片的路径。可以通过image.data检查图像是否正确读入
if(!image.data)
{
//图像读入出错
}
此处的data是image 对象的成员变量,它是指向已分配的内存块的指针,该内存块存储图像数据。如果指定路径无图像等,data被简单设置为0。
显示
首先定义一个要进行图像显示的窗口,然后指定要显示的图像即可。OpenCV的highgui模块实现了该功能。
cv::namedWindows("Oringinal Image"); //定义窗口
cv::imshow("Oringinal Image",image); //显示图像
一些图像处理的操作
图像读入内存,可以进行一些图像处理操作。如将图像反转。
cv::flip(image,image,1); //1 表示水平反转
//0 表示垂直反转
//负数表示既有水平也有垂直反转
这是在原地对图像进行反转操作,也可以创建一个新的矩阵用来存储处理后的图像:
cv::Mat dst;
cv::flip(image,flip,1);
使用cv::waitKey(0);在程序退出前,等待用户的输入。便于用户观察程序处理的结果。
保存
通过highgui模块提供的imwirte()方法,实现图像的保存
cv::imwrite("output.jpg",dst);