为了对图片进行后续操作,我们需要把图片从磁盘中载入,我们要使用函数cv::imread():
cv::imread(const string&filename,//输入图片文件名或地址
int flags=cv::IMREAD_COLOR//设置为怎样去读取该图片文件
)
flags的值可以被设定为下表的任意一个值
标志 | 含义 |
---|---|
cv::IMREAD_COLOR | 总是读取三通道图像 |
cv::IMREAD_GRAYSCALE | 总是读取单通道图像 |
cv::IMREAD_ANYCOLOR | 通道数为文件实际通道数 |
cv::IMREAD_ANYDPATH | 允许加载超j过8bits深度 |
cv::IMREAD_UNCHANGED | 具有一个独特的效果 |
cv::imread()可以读取很多图像格式,包括BMP、DIP、PNG、PBM、JPE等,在载入图像失败时,返回一个空的Mat(可以用Mat.empyt()==true来判断)
1.namedWindow函数的原型为:
namedWindow(const string& winname,int flags = WINDOW_AUTOSIZE) ;
参数1:新建的窗口的名称。自己随便取。
参数2:窗口的标识,一般默认为WINDOW_AUTOSIZE 。
WINDOW_AUTOSIZE 窗口大小自动适应图片大小,并且不可手动更改。
WINDOW_NORMAL 用户可以改变这个窗口大小
WINDOW_OPENGL 窗口创建的时候会支持OpenGL
2.mshow的输入参数如下:
oid cv::imshow ( const String & winname,
InputArray mat
)
其中第一个参数是窗口的名称,第二个是待显示的图像。该函数将图像在特定的窗口进行显示。如果该窗口是利用cv::WINDOW_AUTOSIZE标志创建的,则会使用图像的原始分辨率进行显示,然而会受限于屏幕的分辨率。也就是如果图像大于屏幕的分辨率,则无法完整的查看了。
函数cvtcolor其C++接口为
void cv::cvtColor ( InputArray src,
OutputArray dst,
int code, // 颜色映射类型,可以查表得到,有很多
int dstCn = 0 // 输出的通道数 (0='automatic'),我们可以使用默认值,什么都不写。
)
1.InputArray src: 输入图像即要进行颜色空间变换的原图像,可以是Mat类 。
2.OutputArray dst: 输出图像即进行颜色空间变换后存储图像,也可以Mat类 。
3.int code: 转换的代码或标识,即在此确定将什么制式的图片转换成什么制式的图片。数目有点多,可以去查表
4.int dstCn = 0: 目标图像通道数,如果取值为0,则由src和code决定。
首先来看看imwrite()函数的具体用法。
bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>() )
该函数是把程序中的Mat类型的矩阵保存为图像到指定位置。参数filename为所需保存图像的文件目录和文件名。这里的文件名需要带有图像格式后缀的。
第一个参数const String& filename表示需要写入的文件名,必须要加上后缀,比如“123.jpg”。注意:你要保存图片为哪种格式,就带什么后缀。
第二个参数InputArray img表示Mat类型的图像数据。
第三个参数const std::vector& params表示为特定格式保存的参数编码,它有一个默认值std::vector< int >(),所以一般情况下不用写。
#include
#include
#include
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst;
src = imread("D:/vcprojects/images/test.png");
if (!src.data) {
printf("could not load image...\n");
return -1;
}
int main(int argc, char** argv) {
Mat src, dst;
src = imread("D:/vcprojects/images/test.png");
if (!src.data) {
printf("could not load image...\n");
return -1;
}
namedWindow("input image", CV_WINDOW_AUTOSIZE);
imshow("input image", src);
#include
#include
using namespace cv;
int main(int argc,char** argv)
{
Mat src = imread("D:\\c++代码\\opencv第一课\\zdy.jpg");
if(src.empty())
{
printf("Could not load image...\n");
return -1;
}
namedWindow("test opencv setup",CV_WINDOW_AUTOSIZE);
imshow("test opencv setup",src);
namedWindow("output windows",CV_WINDOW_AUTOSIZE);
Mat output_iamge;
cvtColor(src,output_iamge,CV_RGB2HLS);
imshow("output windows",output_iamge);
imwrite("D:\\c++代码\\opencv第一课\\hlstest.tif",output_iamge);
waitKey(0);
return 0;
}