用OpenCV实现图像的水平镜像(翻转)变换和竖直镜像(翻转)变换(垂直镜像变换)的源码
图像处理开发需求、图像处理接私活挣零花钱,请加微信/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实现图像的水平镜像(翻转)变换和竖直镜像(翻转)变换(垂直镜像变换)的源码相关推荐
- opencv计算图像的水平投影和垂直投影
本文介绍使用opencv实现计算一幅图像的水平投影和垂直投影,代码如下: class HorizontalProjection { private:int maxLine;//255最大行位置int ...
- C++ opencv计算图像的水平投影,并返回一幅图像
效果图 输入图像 输出图像 代码 //计算图像的水平投影,并返回一幅图像 cv::Mat getVerProjImage(const cv::Mat &image) {cv::Mat matT ...
- 水平方向的算子检测竖直边缘理解
-1 0 1 -1 0 1 -1 0 1 这种算子称为水平方向的算子. 是因为利用它可以检测出图像在水平方向上两侧是否存在差异 如果在水平方向上存在差异则可能是竖直边缘
- 滑动门和翻转门实现的横竖双tab标签测试页面(附源码)
双tab可以用来表现二维数据的某一个单元.所以很多情况下还是比较有用的.但是很少人用这个而已.人们少用的原因比较多.反正我是比较少见的. 此版本至少测试版,只有IE6下进行了测试.FF和IE7一定会有 ...
- 对象水平对齐,并且按照竖直方向排列
;; ;;程序名称:对象水平对齐程序,并且按照竖直方向排列 ;;执行命令:tb2 ;;程序功能:将选定的对象左对齐,并且按照竖直方向排列. ;; (defun c:tb2(/ selobjs oldc ...
- Java + OpenCV 对图像进行水平投影和竖直投影
核心代码如下,我也没有运行过,从 python 翻译过来的一份代码, 自己测试试一下效果吧. 介意的请勿订阅. package com.biubiu.example;import org.opencv ...
- 实现图片沿水平和竖直方向翻转(旋转180度)
相机旋转180度,为了不改变原有的算法,最好的方法是将图片旋转180,这样就和之前拍摄的图片一致了.最先想到的方法是在basler相机中设置,但只找到了ReverseX,不满足要求. 查阅左飞的图像处 ...
- html下拉菜单怎么竖直,导航条(垂直/水平/下拉菜单)
home about Service Work News Contact Teleph MailTo Address 1.准备. 导航条的制作,不管是水平还是垂直,首先必须要有结构清晰的html代码. ...
- macOS Swift精品项目之查找图像的主色App 使用CIE LAB颜色空间和k-means聚类算法(教程含源码)
实战需求 macOS Swift精品项目之查找图像的主色App 使用CIE LAB颜色空间和k-means聚类算法 本文价值与收获 看完本文后,您将能够作出下面的界面 基础知识 Color Space ...
最新文章
- 更改Webshpere的profile端口及删除profile
- 关于MVVM与MVC
- JSON||获取数据||json数据语法
- 用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed, probable Oracle Net admin error...
- 2025年全球结构化布线市场预计将达到165亿美元
- HarmonyOS之AI能力·词性标注
- 常用php时间函数 date() mktime() strtotime()
- 15 款Python编辑器的优缺点,别再问我“选什么编辑器”啦!
- Windows系统进程介绍
- Linux 命令(114)—— nl 命令
- 纯CSS实现二级下拉导航菜单
- 39. 日志记录与使用情况跟踪
- 全国java二级考试范围,全国计算机二级Java考试大纲
- unity 创建中文自定义字体
- web自动化神器,QuickTester
- java用画正弦函数_用java语言绘制正弦曲线
- 全面公测 | 百度智能云CCE在离线混部功能
- 09年河南高考零分作文:兔子,你就是一个傻B
- 数据透视表:多重合并计算数据区域
- 小白新人Python哪些基础知识必学?
热门文章
- python按行读取txt文件-Python逐行读取txt文本,按符合分割词并逐行写入txt
- python如何爬虫-如何使用python写爬虫程序
- python培训比较好的机构-西安比较好的python培训机构推荐
- 编程软件python中的if用法-python 函数式编程工具
- python操作系统-python 操作系统
- 用python画关系网络图-python networkx 包绘制复杂网络关系图的实现
- python语言if语句-Python在if语句中等同于(logical-and)
- python用于什么-python主要应用在哪些领域?
- python编程案例教程书籍-清华大学出版社-图书详情-《Python案例教程》
- python中怎么安装pip-python中怎么安装pip