怎样用OpenCV实现怀旧滤镜效果
时间: 2024-05-01 18:22:53 浏览: 9
要使用OpenCV实现怀旧滤镜效果,可以按照以下步骤进行:
1. 读取图像:使用OpenCV的imread函数读取原始图像。
2. 转换为灰度图像:将原始图像转换为灰度图像,使用OpenCV的cvtColor函数即可实现。
3. 增加对比度:使用OpenCV的equalizeHist函数对灰度图像进行直方图均衡化,增加对比度。
4. 应用滤镜:使用公式 R = 0.393R + 0.769G + 0.189B, G = 0.349R + 0.686G + 0.168B, B = 0.272R + 0.534G + 0.131B 将图像中每个像素点的RGB值替换为新的值,即可实现怀旧效果。
5. 显示图像:使用OpenCV的imshow函数将处理后的图像显示出来。
下面是示例代码:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 增加对比度
gray = cv2.equalizeHist(gray)
# 应用滤镜
for i in range(img.shape[0]):
for j in range(img.shape[1]):
b = 0.272 * img[i][j][2] + 0.534 * img[i][j][1] + 0.131 * img[i][j][0]
g = 0.349 * img[i][j][2] + 0.686 * img[i][j][1] + 0.168 * img[i][j][0]
r = 0.393 * img[i][j][2] + 0.769 * img[i][j][1] + 0.189 * img[i][j][0]
img[i][j][0] = min(255, b)
img[i][j][1] = min(255, g)
img[i][j][2] = min(255, r)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先读取了一张名为“image.jpg”的图像,然后将它转换为灰度图像并增加对比度。
接着,我们按照上述公式对每个像素点的RGB值进行替换,最后使用imshow函数将处理后的图像显示出来。