OpenCV入门:(二:加载,显示,修改以及保存图片)
2015-06-25 22:30
597 查看
目标:
1.从图片文件打开图片(imread)2.显示图片(namedWindow和imshow)
3.转换当前图片为灰色图片(cvtColor)
4.保存图片(imwrite)
代码:
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc,char ** argv) { Mat image; //从文件中加载图片到image image = imread("lena.jpg",CV_LOAD_IMAGE_COLOR); //如果图片加载失败 if (!image.data ) { cout<<"read image failed"<<endl; return -1; } //创建显示图片窗口 namedWindow("Ori Pic",WINDOW_AUTOSIZE); //显示窗口 imshow("Ori Pic",image); //等待用户按键 waitKey(10); //创建一个新矩阵用于 Mat grayImage; //将图片转换成灰色,保存在grayimage中 cvtColor(image,grayImage,CV_BGR2GRAY); //保存grayimage到文件 imwrite("lena_gray.jpg",grayImage); //创建灰色图片窗口 namedWindow("Gray Pic",WINDOW_AUTOSIZE); //显示灰色图片 imshow("Gray Pic",grayImage); //等待用户按键 waitKey(0); return 0; }
API说明:
Mat:储存图片数据的结构,后面会详细说明。Mat imread(const string& filename, int flags=1 )
filename:需要加载的文件名
flags:加载图像的颜色类型,可以取以下值。
CV_LOAD_IMAGE_ANYDEPTH 如果设置了则返回16/32位图像,如果没设置,则返回8位图像 CV_LOAD_IMAGE_COLOR 返回8位图像 CV_LOAD_IMAGE_GRAYSCALE 返回灰度图像 >0 返回一个三通道图像 =0 返回灰色图像 <0 返回带有α通道的图像
void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE )
winname:窗口名字,也是窗口的标识符
flags:创建窗口标识,可以为以下值
WINDOW_NORMAL 窗口可以无约束的修改大小 WINDOW_AUTOSIZE 自动设置窗口大小为和图片适应的大小,并且不能修改 WINDOW_OPENGL 可以创建一个支持OpenGL的窗口
void imshow(const string& winname, InputArray mat)
winname:窗口的名字
mat:显示的图片数据。
此函数一般同waitkey同用,waitKey(0) 显示窗口直到用户按下键,waitkey(10) 显示窗口10ms。
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
src 输入的图片
dst 和src有着相同的尺寸和深度(depth)的输出图片缓存区
code 颜色空间转换码
dstCn 目标缓存区的颜色通道,如果为0则设置和源图像相同的通道
bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>() )
filename:保存文件名
img:保存的图片
params:指定格式的数据存储的容器,以这种格式出现,paramId_1, paramValue_1,paramId_2, paramValue_2.
对于JPEG图像:parmId可以为:CV_IMWRITE_JPEG_QUALITY表示图片质量。paramValue_1可以为0-100(越高图片质量越好),默认是95。
对于PNG图像:parmId可以为:CV_IMWRITE_PNG_COMPRESSION 表示压缩等级。paramValue_1可以为0-9(越高图片越小),默认是3。
对于PPM, PGM, 和PBM图像:parmId可以为:CV_IMWRITE_PXM_BINARY 表示二进制格式化标志(binary format flag)。paramValue_1可以为0或1。默认是1。
显示效果
运行上面代码:首先显示彩色图片:
10秒过后
同时当前目录增加了一张名为lena_gray.jpg的图片。
本文结束。
相关文章推荐
- linux sort用法
- linux 文件比对总结
- 20条Linux命令面试问答 [转]
- nginx启动,重启,关闭命令
- linux环境C编程与windows的不同
- hive相关常见错误
- Linux grub命令
- 手斧Linux – 从LFS到Funtoo (57)
- OpenGL纹理贴图 JPEG纹理
- 【OpenGL ES系列教程四】着色语言 Shading Language(二)
- 手斧Linux – 从LFS到Funtoo (56)
- 手斧Linux – 从LFS到Funtoo (55)
- 手斧Linux – 从LFS到Funtoo (54)
- 手斧Linux – 从LFS到Funtoo (53)
- 虚拟机中Centos7搭建本地仓库
- linux sort 命令详解
- MySQL主库高可用 -- 双主单活故障自动切换方案 推荐
- 【OpenGL ES系列教程三】着色语言 Shading Language(一)
- 手斧Linux – 从LFS到Funtoo (52)
- Linux mkdir 命令