哈哈哈哈哈哈镜~
欢迎关注【 Opencv视觉实践 】 我绝对是无聊爆炸了,所以我又丧心病狂处理二次元图片了。 今天基于像素变换来实现图像的哈哈镜变换,效果就是下面这样了: 哈哈镜分两种,一种是挤压,一种是放大。分别对应凹函数和凸函数。 输入一副图像,首先设置缩放中心center,我们取原图鼻子处为中心。 设置图像上任意一点到中心点的相对坐标tx= x-cx,ty=y-cy。 左边为挤压哈哈镜,对应像素映射函数: //变换后新的坐标 x = cos ( atan2 (ty , tx))* 12 *( sqrt (tx*tx + ty*ty))+cx y = sin ( atan2 (ty , tx))* 12 *( sqrt (tx*tx + ty*ty))+cy 公式中的常数12代表强度,越大则图像越扭曲。 自定义挤压函数(C++版)(Python版可以点击文末阅读原文查看): Mat MinFrame (Mat frame) { Mat srcImage; frame.copyTo(srcImage); int radius = 400 ; //定义哈哈镜的半径 int height = frame.rows; int width = frame.cols; //图片的长宽 Point2d center; //人脸中心 center.x = 130 ; center.y = 180 ; int