最近在训练CNN网络,需要对数据进行扩充,于是想做一下图像的镜像翻转,主要参考了博客:

不过我发现博主使用的是opencv老版本了,现在大家都是cv2了,因此我对博主的代码进行了必要的修改。

首先,说明一下,图像的镜像变化不改变图像的形状。图像的镜像变换分为:水平镜像,垂直镜像,对角镜像

下面,简单说一下三种变换的简单公式:假设原图像的大小为H*W,i,j为原始图像第(i,j)元素,I,J为变换后(I,J)元素,则:

水平镜像可按公式:

I = i

J = W - 1 - j

垂直镜像可按公式:

I = H - 1 - i

J = j

对角镜像可按公式:

I = H - 1 - i

J = W -1 - i

就是这么简答,贴下我的代码吧!

'''

函数:DataAugment()

函数功能:扩大数据量

输入参数:dir_path----图片库路径

'''

def DataAugment(dir_path):

if not os.path.exists(dir_path):

print u'路径不存在'

else:

dirs = os.listdir(dir_path)

for subdir in dirs:

sub_dir = dir_path + '/' + subdir

files = os.listdir(sub_dir)

fileNum = len(files)

if fileNum > 25:

continue

num=0

for fr in files:

suff = fr.split('.')[1]

filename = sub_dir + '/' + fr

img = cv2.imread(filename)

size = img.shape#获得图像的形状

iLR = copy.deepcopy(img)#获得一个和原始图像相同的图像,注意这里要使用深度复制

h = size[0]

w = size[1]

for i in range(h):#元素循环

for j in range(w):

iLR[i,w-1-j]=img[i,j]#注意这里的公式没,是不是恍然大悟了(修改这里)

new_name ="%s/%09d.%s"%(sub_dir,num,suff)

num+=1

cv2.imwrite(new_name,iLR)

#cv2.imshow('image',iLR)

#cv2.waitKey(0)

说明:我这里只实现了水平镜像翻转,要实现其他翻转,可以使用其他公式。

python opencv图片旋转180度_Python opencv图像镜像翻转相关推荐

  1. python 数据逆时针旋转270度_Python自动耍俄罗斯方块

    小笨聪前面的文章总是用 Python 来进行爬虫,今天就换一下口味,体验一下 Python 自动耍俄罗斯方块. 小游戏 | Python自动玩俄罗斯方块​mp.weixin.qq.com 俄罗斯方块( ...

  2. 在html中让图片旋转180度,gif图片旋转教程:怎么把gif旋转90度/180度 附gif图片旋转软件...

    视频可以用视频编辑软件将视频旋转90度>>gif旋转90度或180度呢,往下看,你可在本文中找到答案. 先睹为快,看看旋转的效果对比图: 原图                    顺时旋 ...

  3. CSS3只让背景图片旋转180度

    CSS3旋转背景图片 一.心路历程 二.代码实现 一.心路历程 最近写驾驶舱的时候琢磨了一个问题,就是单纯的使背景图片旋转的一定的角度. 只通过CSS3的transfrom让整个容器都翻转了一定的角度 ...

  4. python给图片加半透明水印_Python+OpenCV为图片添加中文水印与图片水印

    OpenCV中在图片上输出中文一般有两种解决办法: 一种需要借助FreeType库实现.FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件. ...

  5. opencv 图片旋转90度

    这个小功能居然会折腾我很久,都怪opencv的官方函数warpAffine旋转后总会平移,结果留下难看的黑边.几经google,终于发现opencv的c函数中有神奇的transpose和flip可以互 ...

  6. python 读取图片成为一维数组_python+opencv 图像的数组和矩阵操作

    在调用opencv的imread函数读取图像时,我们得到的其实是一个类型为numpy.ndarray的n维数组.这个数组的维度是[height,width,3],它是由每个像素的RGB通道的灰度值组成 ...

  7. python下载图片被覆盖了_Python OpenCV – 覆盖透明的图像

    我想要实现的是将具有透明度的图像放在另一个图像的顶部.像这样的东西: 我一直无法找到任何解决方案,所以我决定逐像素地计算得到的颜色.那个对我有用,但速度很慢. 我是OpenCV的新手,也是Python ...

  8. python提取图片感兴趣区域_Python+OpenCV感兴趣区域ROI提取方法

    方法一:使用轮廓 步骤1 """src为原图""" ROI = np.zeros(src.shape, np.uint8) #感兴趣区域RO ...

  9. css 背景图旋转 只让背景图片旋转180度的实现示例

    最近进行二次开发的时候有个图片用背景图要旋转一定角度. 下图中如果只给.question添加背景通过CSS3的transfrom rotate肯定是会影响文字的展示. 所以把背景图放到伪类中进行旋转就 ...

最新文章

  1. 概率论与数理统计(三)
  2. 循序渐进——NAnt构建实例
  3. spring boot整合redis实现统计访问量
  4. linux解压rar文件权限,linux下使用unrar命令解压*.rar格式文件
  5. linux nfs mysql_MySQL实现高可用+共享存储NFS
  6. ios UIlabel
  7. 安装appcan后打开eclipse出错
  8. j2me解决模拟器乱码
  9. 六自由度机械臂仿真设计|包括UR5|Puma|victor5|运动学正逆解介绍|MATLAB机器人工具箱|Adams仿真
  10. python处理cad_pyautocad python 操作CAD文件
  11. 前端实现内网在线excel编辑和word在线编辑相关建议
  12. RT-Thread— 知识点总结(RTT认证+面试题汇总)
  13. 牛客bfs:工厂流水线
  14. 如何修改Android应用程序的图标和名字?
  15. 我的四核Cortex-A53学习之路
  16. java学习笔记day09 final、多态、抽象类、接口
  17. matlab-车辆操纵稳定性2自由度、 3自由度
  18. lte接口流程图_LTE信令流程图(端到端平台)解析.doc
  19. 并发编程02-什么是线程安全以及Java虚拟机中哪些数据是线程共享的,那些是线程私有的
  20. java如何忽略过程值_Java中容易被你忽略的细节(四)

热门文章

  1. 三种方式实现日志记录
  2. Python: 元组的基本用法
  3. DotNET企业架构应用实践-企业管理软件架构的历史与发展(中)- 分布式系统
  4. UA OPTI544 量子光学14 量子电动力学基础
  5. UA MATH564 概率论VI 数理统计基础3 卡方分布中
  6. UA MATH571A R语言回归分析实践 一元回归2 NBA球员的工资
  7. 初次转化max模型为3D Tiles失败、cesium加载一个obj格式的3D 机房模型
  8. 字符串的前缀与后缀和简单示例程序win32版
  9. 第一次运行OSG入门程序失败记和搞定的情况
  10. Bash命令行历史用法【转】