Opencv-python滤镜系列(2): 鱼眼滤镜效果实现

Photoshop中鱼眼滤镜效果又称凸透镜效果,相当于你通过凸透镜所得的视觉效果,本文利用Python实现这个滤镜。请尊重原创,转载请注明出处。

原理:
参考博客:
凸透镜效果算法(matlab)
扩张效果(C++)

效果:
在这里插入图片描述
Python实现源代码:

import cv2
import numpy as np
import math

def Filter_Tutoujing(src_img):   #凸透镜

    row=src_img.shape[0]
    col=src_img.shape[1]
    channel=src_img.shape[2]
    new_img=np.zeros([row,col,channel],dtype=np.uint8)
    center_x=row/2
    center_y=col/2
    # radius=math.sqrt(center_x*center_x+center_y*center_y)/2
    radius = min(center_x,center_y)
    for i in range(row):
        for j in range(col):

            distance=((i-center_x)*(i-center_x)+(j-center_y)*(j-center_y))
            new_dist=math.sqrt(distance)
            new_img[i,j,:]=src_img[i,j,:]
            if distance<=radius**2:
                new_i=np.int(np.floor(new_dist*(i-center_x)/radius+center_x))
                new_j=np.int(np.floor(new_dist*(j-center_y)/radius+center_y))
                new_img[i,j,:]=src_img[new_i,new_j,:]
    return new_img

src_img_name='timg.jpg'
src_img=cv2.imread(src_img_name)
new_img=Filter_Tutoujing(src_img)
cv2.imshow('src',src_img)
cv2.imshow('tutoujing',new_img)
cv2.waitKey()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酸罗卜不酸II

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值