用Python写一个哈哈镜滤镜效果的代码
时间: 2024-04-25 22:03:46 浏览: 13
可以使用OpenCV和NumPy库来实现哈哈镜滤镜效果。以下是一个简单的示例代码:
```python
import cv2
import numpy as np
def hahaha_filter(img):
# 获取图像的宽度和高度
height, width = img.shape[:2]
# 创建一个空白图像,用于存储哈哈镜滤镜效果
hahaha_img = np.zeros((height, width, 3), dtype=np.uint8)
# 循环遍历每个像素
for y in range(height):
for x in range(width):
# 计算当前像素到图像中心的距离
dx = x - width/2
dy = y - height/2
distance = np.sqrt(dx**2 + dy**2)
# 根据距离计算出放大倍率
scale = 1.5 * distance / (width/2)
# 获取经过放大后的像素坐标
new_x = int(x + dx*scale)
new_y = int(y + dy*scale)
# 确保新坐标在图像范围内
if new_x >= 0 and new_x < width and new_y >= 0 and new_y < height:
# 将当前像素的颜色赋值给新位置像素
hahaha_img[new_y, new_x] = img[y, x]
return hahaha_img
# 读取图像并显示原始图像和哈哈镜滤镜效果
img = cv2.imread('example.jpg')
cv2.imshow('Original Image', img)
hahaha_img = hahaha_filter(img)
cv2.imshow('Hahaha Filter Image', hahaha_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先定义了一个名为`hahaha_filter`的函数,该函数接受一个图像作为输入,并返回一个经过哈哈镜滤镜处理后的图像。在函数中,我们首先创建了一个空白图像,然后循环遍历原始图像中的每个像素,并根据像素到图像中心的距离计算出放大倍率,并将当前像素的颜色赋值给新位置像素。最后返回处理后的图像。
在主程序中,我们首先读取原始图像,并显示原始图像和经过哈哈镜滤镜处理后的图像。你可以将`example.jpg`替换为自己的图像文件名。运行程序后,你将看到原始图像和哈哈镜滤镜效果的图像。