博客
关于我
图像尺寸变换
阅读量:313 次
发布时间:2019-03-03

本文共 3066 字,大约阅读时间需要 10 分钟。

图像尺寸变换

图像插值原理

由于对图像的操作存在拉伸变换,造成变换前后图像像素点位置发生变化。

  • 两个像素合并成一个像素
  • 两个相邻像素中间多出位置

最邻近法

选择临近的像素。简单,效果较差

线性插值法

选择临近两个像素,建立一次函数,进行投影,得到的数据

双线性插值法

选择临近的四个像素,四个像素两两建立一次函数,再把像素投影到建立好的一次函数上再次建立一次函数得到数据。

应用图像的拉伸变换、旋转、仿射变换、透视变换等涉及到对图像像素位置改变的情况。

图像缩放,反转,拼接

缩放

resize()

void cv::resize(InputArray		src,               OutputArray		dst,               Size				dsize,               double			fx = 0,               double 			fy = 0,               int				interpolation = INTER_LINEAR)
  • src:输入图像
  • dst:输出图像
  • dsize:输出图像的尺寸
  • fx:水平轴的比例因子,如果将水平轴变为原来的两倍,则赋值为2
  • yx:垂直轴的比例因子,如果将垂直轴变为原来的两倍,则赋值为2
  • interpolation:插值方法的标志。

fx , yx 与 dsize 若存在冲突选用dsize

//************************************// Method:    sizeChange// FullName:  sizeChange// Access:    public // Returns:   void// Qualifier: 尺寸变换//************************************void sizeChange(){   	// 尺寸变换	Mat smallImg, bigImg0, bigImg1, bigImg2;	Mat gray = imread("./lena.png", IMREAD_GRAYSCALE);	// 缩小	resize(gray, smallImg, Size(15, 15), 0, 0, INTER_AREA);	// 最近邻插值放大	resize(smallImg, bigImg0, Size(30, 30), 0, 0, INTER_NEAREST);	// 双线性插值	resize(smallImg, bigImg1, Size(30, 30), 0, 0, INTER_LINEAR);	// 双三次插值	resize(smallImg, bigImg2, Size(30, 30), 0, 0, INTER_CUBIC);	namedWindow("smallImage", WINDOW_NORMAL);	imshow("smallImage", smallImg);	namedWindow("bigImg0", WINDOW_NORMAL);	imshow("bigImg0", bigImg0);	namedWindow("bigImg1", WINDOW_NORMAL);	imshow("bigImg1", bigImg1);	namedWindow("bigImg2", WINDOW_NORMAL);	imshow("bigImg2", bigImg2);	waitKey(0);}

翻转

flip()

void cv::flip(InputArray		src,             OutputArray		dst,             int				flipCode)
  • src:输入图像

  • dst:输出图像

  • flipCode:翻转方式标志

    标志 含义
    大于0 绕y轴进行翻转
    等于0 绕x轴进行翻转
    小于0 绕两个轴进行翻转
//************************************// Method:    reverImg// FullName:  reverImg// Access:    public // Returns:   void// Qualifier: 图像翻转//************************************void reverImg(){   	Mat img = imread("./lena.png");	Mat imgx, imgy, imgx_y;	flip(img, imgx, 0);	flip(img, imgy, 1);	flip(img, imgx_y, -1);	imshow("img", img);	imshow("imgx", imgx);	imshow("imgy", imgy);	imshow("imgx_y", imgx_y);	waitKey(0);}

拼接

vconcat()纵向连接

void cv::vconcat(const Mat* 	src,                size_t			nsrc,                OutputArray		dst)
  • src:Mat 矩阵类型的数组
  • nsrc:数组中Mat类型数据的数目
  • 连接后的Mat类矩阵

横向拼接要求高度一致

纵向拼接要求宽度一致

void cv::vconcat(InputArray		src1,                InputArray		src2,                OutputArray		dst)
  • 第一个需要连接的Mat类矩阵
  • 第二个需要连接的Mat类矩阵
  • 连接后的Mat类矩阵

hconcat纵向连接

void cv::hconcat(const Mat*			src,                size_t				nsrc,                OutputtArray		dst)
void cv::hconcat(InputtArray		src1,                InputtArray			src2,                OutputtArray		dst)
//************************************// Method:    imgJoint// FullName:  imgJoint// Access:    public // Returns:   void// Qualifier: 图像拼接//************************************void imgJoint(){   	Mat img00 = imread("./img00.png");	Mat img01 = imread("./img01.png");	Mat img10 = imread("./img10.png");	Mat img11 = imread("./img11.png");	Mat imgl, imgr, img;	// 纵向拼接	vconcat(img00, img10, imgl);	vconcat(img01, img11, imgr);	// 横向拼接	hconcat(imgl, imgr, img);}

转载地址:http://jgkq.baihongyu.com/

你可能感兴趣的文章
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
ngrok内网穿透可以实现资源共享吗?快解析更加简洁
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>