opencv 数字图象处理 镜像变换 cvFlip()
来源:互联网 发布:洋葱新闻 知乎 编辑:程序博客网 时间:2024/06/07 19:54
图像镜像(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 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();}
0 0
- opencv 数字图象处理 镜像变换 cvFlip()
- opencv 数字图象处理 图像平移变换
- 图像的镜像cvFlip
- OpenCV 几何变换-图像镜像
- OpenCV中cvFlip()函数用法
- OpenCV图像几何变换——转置,镜像,倒置
- 用OpenCV实现图像的水平镜像(翻转)变换和竖直镜像(翻转)变换(垂直镜像变换)的源码
- 4.3【图像镜像】-------------基于Opencv实现-----图像的镜像变换
- 图像镜像变换
- 【opencv&VS2008】关于cvFlip的那些事
- 数字图象处理——仿射变换
- 数字图象处理
- 图像镜像变换
- 图像的镜像变换
- 用OpenCV的distanceTransform函数作图像的距离变换
- opencv矩阵cvDet,cvDit,cvDotProduct,cvEigenVV and cvFlip
- OpenCV下三对点计算仿射变换实现图像的水平镜像(翻转)的详细说明和源程序
- HTML5画布镜像变换教程
- UVa 10664 - Luggage
- 将win7笔记本电脑变身WiFi热点,让手机、ipad共享上网!
- 高效使用Bitmaps(一) 大Bitmap的加载
- C实现动态数组
- LeetCode-ZigZag Conversion
- opencv 数字图象处理 镜像变换 cvFlip()
- binder设计与实现
- JavaScript 数组+while循环
- 为什么要fork两次来避免产生僵尸进程
- Xcode 6中添加预编译pch文件
- MySQL学习系列15:优化
- Linux文件,文件描述符以及dup()和dup2()
- nfc原理
- 判定url在微信中打开