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

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

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


01.公式原理

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

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

02.程序实现

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

上图中,程序通过形参来获取中心点的坐标信息,然后对输入图像的每一个坐标,都进行坐标位置的坐标映射,最后将映射后的特征坐标进行像素赋值,并返回最终的结果。

这样我们就完成了对于一张图片的放大哈哈镜的效果。而对于缩小的哈哈镜程序,其处理的方式也是相同的,针对每一个像素坐标,按照缩小哈哈镜的公式进行坐标的映射后得到最终的结果。

03.程序界面

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

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

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

04.效果展示

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

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

如何获取源码:

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

往期推荐阅读:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值