opencv 数字图象处理 镜像变换 cvFlip()
2015-06-29 22:21
387 查看
图像镜像(Mirror)变换分为三种:一种是水平镜像;一种是垂直镜像;一种是对角镜像。图像的镜像变换不改变原图像的形状。
####################################################
void cvFlip()
{
const CvArr* src,
CvArr* dst=NULL,
int flip_mode=0
};
本函数是将图像绕着在X轴或Y轴或者绕着X轴和Y轴上同时旋转。
当参数flip_mode=0时,图像只会绕X轴旋转
当参数flip_mode>0(被设置为正值时),图像会围绕Y轴旋转
当参数flip_mode<0时,图像会围绕X轴和Y轴旋转
####################################################
图像水平镜像变换是将图像左半部分和右半部分以图像的垂直中轴线为中心,进行镜像变换。
####################################################
图像垂直变换是将图像上半部分和下半部分以图像的水平中轴线为中心,进行镜像对换
#####################################################
图像的对角镜像变换是以原图像水平中轴线和垂直中轴线的交点为中心将图像进行变换,相当于先对图像进行水平镜像变换,再进行垂直镜像变换
####################################################
void cvFlip()
{
const CvArr* src,
CvArr* dst=NULL,
int flip_mode=0
};
本函数是将图像绕着在X轴或Y轴或者绕着X轴和Y轴上同时旋转。
当参数flip_mode=0时,图像只会绕X轴旋转
当参数flip_mode>0(被设置为正值时),图像会围绕Y轴旋转
当参数flip_mode<0时,图像会围绕X轴和Y轴旋转
####################################################
图像水平镜像变换是将图像左半部分和右半部分以图像的垂直中轴线为中心,进行镜像变换。
void horiMirror(void)//水平镜像变换 {//x=x0, y=N-y0+1 N为列数 int N; IplImage *src=cvLoadImage("lena.jpg"); if (src == NULL) exit(0); IplImage *res=cvCreateImage(cvGetSize(src), src->depth, src->nChannels); if (res == NULL) exit(0); N=src->width; for (int i=0; i<src->height; i++) { for (int j=0; j<src->width; j++) { CvScalar color=cvGet2D(src, i, j); cvSet2D(res, i, N-j-1, color);//注意这里 } } cvNamedWindow("src"); cvNamedWindow("res"); cvShowImage("src", src); cvShowImage("res", res); cvWaitKey(0); cvReleaseImage(&src); cvReleaseImage(&res); cvDestroyAllWindows(); }
####################################################
图像垂直变换是将图像上半部分和下半部分以图像的水平中轴线为中心,进行镜像对换
void vertiMirror(void)//垂直镜像变换 {//x=M-x0+1, y=y0 M为行数 int M; IplImage *src=cvLoadImage("lena.jpg"); if (src == NULL) exit(0); IplImage *res=cvCreateImage(cvGetSize(src), src->depth, src->nChannels); if (res == NULL) exit(0); M=src->height; for (int i=0; i<src->height; i++) { for (int j=0; j<src->width; j++) { CvScalar color=cvGet2D(src, i, j); cvSet2D(res, M-i-1, j, color);//注意这里 } } cvNamedWindow("src"); cvNamedWindow("res"); cvShowImage("src", src); cvShowImage("res", res); cvWaitKey(0); cvReleaseImage(&src); cvReleaseImage(&res); cvDestroyAllWindows(); }
#####################################################
图像的对角镜像变换是以原图像水平中轴线和垂直中轴线的交点为中心将图像进行变换,相当于先对图像进行水平镜像变换,再进行垂直镜像变换
void diagonalMirror(void)//对角镜像 {//x=M-x0+1, y=N-y0+1 (M, N)为行列数 相当于先对图像进行水平镜像变换,再进行垂直镜像变换 int M, N; IplImage *src=cvLoadImage("lena.jpg"); if (src == NULL) exit(0); IplImage *res=cvCreateImage(cvGetSize(src), src->depth, src->nChannels); if (res == NULL) exit(0); M=src->height; N=src->width; for (int i=0; i<src->height; i++) { for (int j=0; j<src->width; j++) { CvScalar color=cvGet2D(src, i, j); cvSet2D(res, M-i-1, N-j-1, color);//注意这里 } } cvNamedWindow("src"); cvNamedWindow("res"); cvShowImage("src", src); cvShowImage("res", res); cvWaitKey(0); cvReleaseImage(&src); cvReleaseImage(&res); cvDestroyAllWindows(); }
相关文章推荐
- Centos6.6 安装Subversion服务
- 【原创】Linux opensource-src-4.3.2.tar.gz的安装。
- 大型网站图片服务器架构的演进
- XenServer 6.5实战系列之十三:图形界面安装Linux Redhat系统
- XenServer 6.5实战系列之十三:图形界面安装Linux Redhat系统
- opencv 数字图象处理 图像平移变换
- Linux输入输出重定向
- 底层架构的搭建
- hadoop yarn resouce manager如何避免单点问题
- MySQL在Linux Ubuntu中安装
- mysql备份单实例(一)shell
- Apache Qpid Broker的安全机制
- linux下的蓝牙驱动程序详解
- 谈谈对AOP的认识三——优化AOP,进一步解耦
- linux0.12之内存管理(1)-整体框架思路
- linux内核之关于内存屏障
- MyEclipse2015+Tomcat+MAVEN+SVN项目环境搭建
- 质量管理:测试基础架构图
- 最全最强解析:支付宝钱包系统架构内部剖析(架构图)
- vi编辑器的常用命令