Opencv之读写图像

       imread是用于读取图像的主要函数。这个函数打开图像,并以矩阵格式存储图像。imread接受两个参数:第一个参数是一个包含这个图像路径的字符串,第二个参数默认情况下是可选的,它把加载图像作为一种彩色图像。第二个参数允许以下选项:

      1、CV_LOAD_IMAGE_ANYDEPTH:如果设置为这个常数,当输入具有相应的深度时返回一个16位或32位图像;否则,imread函数将它转换为8位图像;

      2、CV_LOAD_IMAGE_COLOR:如果设置为这个常数,总是将图像转换为彩色的;

      3、CV_LOAD_IMAGE_GRAYSCALE:如果设置为这个常数,总是将图像转换为灰度。

       在计算机中,可以使用imwrite函数存储矩阵图像,该函数的第一个参数是带有所需扩展的图像保存路径。第二个参数事项保存的矩阵图像。在示例代码中,创建并存储灰度图像,然后加载并将存储在gray变量中的灰度图像保存为JPG格式的灰度图像。

       若要访问图像的一个像素,可以使用Opencv的Mat类中的cv::Mat::at<typename t>(row,col)模板函数。末班参数是要有返回类型。8位彩色图像中的typename是一个Vec3b类,它存储三个无符号字符数据(Vec=向量,3=组件数,以及b=1字节)。在灰度图像中,可以直接使用图像中的五福号的字符或任何其他数字形式,例如unchar pixel=color.at<unchar>(myRow,myCol);

      最后显示图像,可以使用imshow函数创建一个窗口,其中第一个参数是标题,第二个参数是图像矩阵。

      如果想允许等待用户按任意键停止应用程序,可以使用Opencv中的waitKey函数,并将参数设置为要等待的毫秒数。如果将这一参数设置为0,将永远等待。

#include<iostream>
#include<string>
#include<sstream>
using namespace std;

//OpenCV头文件
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
using namespace cv;

int main(int argc, const char ** argv)
{
	//读图像
	Mat color = imread("E:\\img\\lena.jpg");
	Mat gray = imread("E:\\img\\lena.jpg", 0);

	//写图像
	imwrite("E:\\img\\lenaGray.jpg", gray);

	//通过opencv函数获取相同像素
	int myRow = color.cols - 1;
	int myCol = color.rows - 1;
	Vec3b pixel = color.at<Vec3b>(myRow, myCol);
	cout << "Pixel value(R,G,B):(" << (int)pixel[0] << "," <<(int)pixel[1] << "," << (int)pixel[2] << ")" << endl;

	//显示图像
	imshow("Lena RGB", color);
	imshow("Lena Gray", gray);

	//等待按键
	waitKey(0);
	return 0;
}

结果:

      

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值