知行编程网知行编程网  2022-06-19 04:00 知行编程网 隐藏边栏 |   抢沙发  8 
文章评分 0 次,平均分 0.0

牛逼,我用Python实现哈哈镜捉弄女友,女友气的拉黑了我


在游乐场或者商场中,大家可能会见到过哈哈镜,哈哈镜通过凹凸不平的镜面,将人物或者是物件在镜面显示中进行扭曲,让人看起来非常的搞笑。


对于哈哈镜的成像效果,有两种的方式,一个是下图中间的缩小的效果,另一种则是下图中右侧的放大效果。小编趁着自己的闲暇时间,自己做了一个哈哈镜的软件,用来捉弄一下自己的朋友,大家一起来看看是如何实现的吧


牛逼,我用Python实现哈哈镜捉弄女友,女友气的拉黑了我


01.公式原理
对图片进行哈哈镜的操作处理,其实就是像素点位置坐标的一个坐标映射关系的变化,我们来结合下图进行讲解。

牛逼,我用Python实现哈哈镜捉弄女友,女友气的拉黑了我

上图中,图像的左上角为坐标原点(0,0),图像的右小角为图像坐标的最大值(width,height)。图像的中心坐标点为(cx, cy),当然这里的中心点坐标大家可以设定为图像中的任意一个像素点,都是可以的。图像中的任意一点到中心点(cx,cy)的x、y方向上的距离被定义为tx、ty。而对于放大的哈哈镜来说,特征映射后的(x,y)坐标公式如下:


牛逼,我用Python实现哈哈镜捉弄女友,女友气的拉黑了我

02.程序实现
有了图像的特征映射公式之后,接下来就是利用程序来实现上面的公式了。这里,我们针对放大哈哈镜的程序来进行讲解,程序如下图所示:

牛逼,我用Python实现哈哈镜捉弄女友,女友气的拉黑了我

上图中,程序通过形参来获取中心点的坐标信息,然后对输入图像的每一个坐标,都进行坐标位置的坐标映射,最后将映射后的特征坐标进行像素赋值,并返回最终的结果。
这样我们就完成了对于一张图片的放大哈哈镜的效果。而对于缩小的哈哈镜程序,其处理的方式也是相同的,针对每一个像素坐标,按照缩小哈哈镜的公式进行坐标的映射后得到最终的结果。


03.程序界面
本次程序界面的设计,我们采用的是tkinter进行界面的搭建,页面整体的结构布局如下。

牛逼,我用Python实现哈哈镜捉弄女友,女友气的拉黑了我

界面的左侧是功能按钮的选择区域,大家可以点击不同的按钮进行功能的选择,界面的中间部分是图片的展示区域,而右侧则是滑动条,用来进行中心坐标点(cx,cy)的设置。对于放大效果按钮所控制的函数,如下图所示。

函数通过读入滑动条的数值来设置中心点(cx,cy)的数值,同时通过放大函数处理图片,并将处理好的图片在界面中进行展示。而对于缩小效果按钮所控制的函数,其函数功能就是通过缩小函数处理图片,并将图片显示在界面上。


04.效果展示
以上就是关于程序内容的简单讲解,接下来我们通过视频展示的方式来看一下如何运行软件,以及我们的哈哈镜效果吧。


大家在拿到程序后,可以用程序来处理自己的图片发给好友,看看他们的反应如何,感兴趣的小伙伴抓紧来试试吧。



如何获取源码:

在后台输入:小助手,找他拿。备注暗号(哈哈镜



往期推荐阅读:
  • 快过年啦,还怕手速慢,我用Python自动抢红包!
  • 从屌丝到高手,三道Python编程题,九种解题算法,看看你属于哪一类
  • 值得收藏!20个Python奇技淫巧,让你受益匪浅!
  • 20行Python代码,自动玩“合成大西瓜”!
  • 【建议收藏】学习 Python 的 11 个顶级 GitHub 存储库
  • 30个Python常用极简代码,拿走就用
  • 全球最美Top100女神出炉,国内六人上榜,我Python发现了这些秘密...
  • 别瞎学了,这几门语言要被淘汰了!

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享