图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601

直接上源码,本人是参考博文的源码OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1) - Brook_icv - 博客园改写而成的!

源码中用到的图像下载地址:lena_gray.png_免费高速下载|百度网盘-分享无限制

首先是水平镜像变换的C源码(不使用MAT类)::

#include <opencv2/opencv.hpp>
#include <opencv2/legacy/compat.hpp>
#include <fstream>
using namespace std;
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")  void mirror_horizontally_image(IplImage *src,IplImage *dst) //实现水平镜像变换
{int M,N;M=src->height;N=src->width;int i=0,j=0;double temp1;CvScalar s1;for(i=0;i<M;i++){for(j=0;j<N;j++){temp1 = cvGet2D(src,i,N-1-j).val[0];s1.val[0]=temp1;cvSet2D(dst,i,j,s1);}}}int main()
{IplImage *pSrcImage = cvLoadImage("lena_gray.png", CV_LOAD_IMAGE_UNCHANGED);  IplImage *pOutImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U,1);mirror_horizontally_image(pSrcImage,pOutImage);const char *pstrWindowsATitle = "原图";  const char *pstrWindowsBTitle = "变换后的图"; //创建窗口      cvNamedWindow(pstrWindowsATitle, CV_WINDOW_AUTOSIZE);      cvNamedWindow(pstrWindowsBTitle, CV_WINDOW_AUTOSIZE);//在指定窗口中显示图像      cvShowImage(pstrWindowsATitle, pSrcImage);    cvShowImage(pstrWindowsBTitle, pOutImage);    //等待按键事件      cvWaitKey();      cvDestroyWindow(pstrWindowsATitle);  cvDestroyWindow(pstrWindowsBTitle); cvReleaseImage(&pSrcImage);  cvReleaseImage(&pOutImage);    return 0;
}

其次是竖直镜像变换的C源码(不使用MAT类)::

#include <opencv2/opencv.hpp>
#include <opencv2/legacy/compat.hpp>
#include <fstream>
using namespace std;
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")  void mirror_vertically_image(IplImage *src,IplImage *dst) //实现竖直镜像变换
{int M,N;M=src->height;N=src->width;int i=0,j=0;double temp1;CvScalar s1;for(i=0;i<N;i++){for(j=0;j<M;j++){temp1 = cvGet2D(src,N-1-j,i).val[0];s1.val[0]=temp1;cvSet2D(dst,j,i,s1);}}}int main()
{IplImage *pSrcImage = cvLoadImage("lena_gray.png", CV_LOAD_IMAGE_UNCHANGED);  IplImage *pOutImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U,1);mirror_vertically_image(pSrcImage,pOutImage);const char *pstrWindowsATitle = "原图";  const char *pstrWindowsBTitle = "变换后的图"; //创建窗口      cvNamedWindow(pstrWindowsATitle, CV_WINDOW_AUTOSIZE);      cvNamedWindow(pstrWindowsBTitle, CV_WINDOW_AUTOSIZE);//在指定窗口中显示图像      cvShowImage(pstrWindowsATitle, pSrcImage);    cvShowImage(pstrWindowsBTitle, pOutImage);    //等待按键事件      cvWaitKey();      cvDestroyWindow(pstrWindowsATitle);  cvDestroyWindow(pstrWindowsBTitle); cvReleaseImage(&pSrcImage);  cvReleaseImage(&pOutImage);    return 0;
}

运行结果如下图所示:

再次是水平翻转、垂直翻转、垂直和水平翻转的C++源码(使用MAT类)::

代码中用到的图像下载链接 pool.jpg_免费高速下载|百度网盘-分享无限制

//OpenCV版本2.4.9
//交流QQ2487872782   #include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>  int main()
{    cv::Mat srcImage = cv::imread("pool.jpg");     if(!srcImage.data)     return -1;    // 水平翻转cv::Mat resultImage2;cv::flip(srcImage, resultImage2, 1); // 垂直翻转cv::Mat resultImage3;cv::flip(srcImage, resultImage3, 0);// 垂直和水平翻转cv::Mat resultImage4;cv::flip(srcImage, resultImage4, -1);cv::imshow("srcImage", srcImage);   cv::imshow("水平翻转后的图像", resultImage2); cv::imshow("垂直翻转后的图像", resultImage3);  cv::imshow("垂直和水平翻转后的图像", resultImage4);  cv::waitKey(0);    return 0;    }    

运行结果如下图所示:

图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601

用OpenCV实现图像的水平镜像(翻转)变换和竖直镜像(翻转)变换(垂直镜像变换)的源码相关推荐

  1. opencv计算图像的水平投影和垂直投影

    本文介绍使用opencv实现计算一幅图像的水平投影和垂直投影,代码如下: class HorizontalProjection { private:int maxLine;//255最大行位置int ...

  2. C++ opencv计算图像的水平投影,并返回一幅图像

    效果图 输入图像 输出图像 代码 //计算图像的水平投影,并返回一幅图像 cv::Mat getVerProjImage(const cv::Mat &image) {cv::Mat matT ...

  3. 水平方向的算子检测竖直边缘理解

    -1  0  1 -1  0  1 -1  0  1 这种算子称为水平方向的算子. 是因为利用它可以检测出图像在水平方向上两侧是否存在差异 如果在水平方向上存在差异则可能是竖直边缘

  4. 滑动门和翻转门实现的横竖双tab标签测试页面(附源码)

    双tab可以用来表现二维数据的某一个单元.所以很多情况下还是比较有用的.但是很少人用这个而已.人们少用的原因比较多.反正我是比较少见的. 此版本至少测试版,只有IE6下进行了测试.FF和IE7一定会有 ...

  5. 对象水平对齐,并且按照竖直方向排列

    ;; ;;程序名称:对象水平对齐程序,并且按照竖直方向排列 ;;执行命令:tb2 ;;程序功能:将选定的对象左对齐,并且按照竖直方向排列. ;; (defun c:tb2(/ selobjs oldc ...

  6. Java + OpenCV 对图像进行水平投影和竖直投影

    核心代码如下,我也没有运行过,从 python 翻译过来的一份代码, 自己测试试一下效果吧. 介意的请勿订阅. package com.biubiu.example;import org.opencv ...

  7. 实现图片沿水平和竖直方向翻转(旋转180度)

    相机旋转180度,为了不改变原有的算法,最好的方法是将图片旋转180,这样就和之前拍摄的图片一致了.最先想到的方法是在basler相机中设置,但只找到了ReverseX,不满足要求. 查阅左飞的图像处 ...

  8. html下拉菜单怎么竖直,导航条(垂直/水平/下拉菜单)

    home about Service Work News Contact Teleph MailTo Address 1.准备. 导航条的制作,不管是水平还是垂直,首先必须要有结构清晰的html代码. ...

  9. macOS Swift精品项目之查找图像的主色App 使用CIE LAB颜色空间和k-means聚类算法(教程含源码)

    实战需求 macOS Swift精品项目之查找图像的主色App 使用CIE LAB颜色空间和k-means聚类算法 本文价值与收获 看完本文后,您将能够作出下面的界面 基础知识 Color Space ...

最新文章

  1. 更改Webshpere的profile端口及删除profile
  2. 关于MVVM与MVC
  3. JSON||获取数据||json数据语法
  4. 用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed, probable Oracle Net admin error...
  5. 2025年全球结构化布线市场预计将达到165亿美元
  6. HarmonyOS之AI能力·词性标注
  7. 常用php时间函数 date() mktime() strtotime()
  8. 15 款Python编辑器的优缺点,别再问我“选什么编辑器”啦!
  9. Windows系统进程介绍
  10. Linux 命令(114)—— nl 命令
  11. 纯CSS实现二级下拉导航菜单
  12. 39. 日志记录与使用情况跟踪
  13. 全国java二级考试范围,全国计算机二级Java考试大纲
  14. unity 创建中文自定义字体
  15. web自动化神器,QuickTester
  16. java用画正弦函数_用java语言绘制正弦曲线
  17. 全面公测 | 百度智能云CCE在离线混部功能
  18. 09年河南高考零分作文:兔子,你就是一个傻B
  19. 数据透视表:多重合并计算数据区域
  20. 小白新人Python哪些基础知识必学?

热门文章

  1. python按行读取txt文件-Python逐行读取txt文本,按符合分割词并逐行写入txt
  2. python如何爬虫-如何使用python写爬虫程序
  3. python培训比较好的机构-西安比较好的python培训机构推荐
  4. 编程软件python中的if用法-python 函数式编程工具
  5. python操作系统-python 操作系统
  6. 用python画关系网络图-python networkx 包绘制复杂网络关系图的实现
  7. python语言if语句-Python在if语句中等同于(logical-and)
  8. python用于什么-python主要应用在哪些领域?
  9. python编程案例教程书籍-清华大学出版社-图书详情-《Python案例教程》
  10. python中怎么安装pip-python中怎么安装pip