求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 


业务架构设计
4月18-19日 在线直播



基于UML和EA进行系统分析设计
4月25-26日 北京+在线



AI 智能化软件测试方法与实践
5月23-24日 上海+在线
 
追随技术信仰

随时听讲座
每天看新闻
 
 
OpenCV 教程
1. OpenCV 简介
2. OpenCV 安装
3. OpenCV 安装(C++)
Python OpenCV
4. OpenCV 入门实例
5. OpenCV 基础模块
6. OpenCV 图像处理基础
7. OpenCV 图像基本操作
8. OpenCV 图像算术运算
9. OpenCV 图像阈值处理
10. OpenCV 图像平滑处理
11. OpenCV 图像形态学操作
12. OpenCV 图像边缘检测
13. OpenCV 图像轮廓检测
14. OpenCV 图像直方图
15. OpenCV 视频处理
16. OpenCV 视频目标跟踪
17. OpenCV 视频背景减除
18. OpenCV 人脸检测
19. OpenCV 物体识别
20. OpenCV 图像拼接
21. OpenCV 简单滤镜效果
C++ OpenCV
22. C++ OpenCV 基础操作
23. C++ OpenCV 图像处理
24. C++ OpenCV 基本模块介绍
25. C++ OpenCV 特征检测与描述
26. C++ OpenCV 高级图像处理
27. C++ OpenCV 视频处理
 
 
目录
OpenCV 简单滤镜效果
42 次浏览
3次  

OpenCV提供了丰富的图像处理和计算机视觉算法,广泛应用于图像处理、视频分析、物体检测等领域。

本文将介绍如何使用 OpenCV 实现几种简单的滤镜效果,包括灰度、怀旧和浮雕效果。

以下是主要滤镜效果:

1、灰度滤镜

灰度滤镜是最简单的滤镜之一,它将彩色图像转换为灰度图像。

灰度图像只有一个通道,每个像素的值表示亮度。

实现步骤

1.读取图像。

2.使用 cv2.cvtColor() 函数将图像从 BGR 颜色空间转换为灰度颜色空间。

实例

import cv2

# 读取图像
image = cv2.imread('input.jpg')

# 转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 保存灰度图像
cv2.imwrite('gray_output.jpg', gray_image)

# 显示灰度图像
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码解析:

  • cv2.imread('input.jpg'):读取图像文件。

  • cv2.cvtColor(image, cv2.COLOR_BGR2GRAY):将图像从 BGR 颜色空间转换为灰度颜色空间。

  • cv2.imwrite('gray_output.jpg', gray_image):保存灰度图像。

  • cv2.imshow('Gray Image', gray_image):显示灰度图像

2、怀旧滤镜

怀旧滤镜通过调整图像的色彩通道,使图像呈现出一种复古的效果。

通常,怀旧滤镜会增加红色和绿色通道的强度,同时减少蓝色通道的强度。

实现步骤

1.读取图像。

2.分离图像的 BGR 通道。

3.调整各个通道的强度。

4.合并通道,生成怀旧效果的图像。

实例

import cv2
import numpy as np

# 读取图像
image = cv2.imread('input.jpg')

# 分离 BGR 通道
b, g, r = cv2.split(image)

# 调整通道强度
r = np.clip(r * 0.393 + g * 0.769 + b * 0.189, 0, 255).astype(np.uint8)
g = np.clip(r * 0.349 + g * 0.686 + b * 0.168, 0, 255).astype(np.uint8)
b = np.clip(r * 0.272 + g * 0.534 + b * 0.131, 0, 255).astype(np.uint8)

# 合并通道
vintage_image = cv2.merge((b, g, r))

# 保存怀旧图像
cv2.imwrite('vintage_output.jpg', vintage_image)

# 显示怀旧图像
cv2.imshow('Vintage Image', vintage_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码解析:

  • cv2.split(image):分离图像的 BGR 通道。

  • np.clip():确保像素值在 0 到 255 之间。

  • cv2.merge((b, g, r)):合并调整后的通道,生成怀旧效果的图像

3、浮雕滤镜

浮雕滤镜通过计算图像中相邻像素的差值,生成一种类似于浮雕的效果,这种滤镜通常用于增强图像的边缘和纹理。

实现步骤

1.读取图像。

2.将图像转换为灰度图像。

3.使用卷积核计算浮雕效果。

实例

import cv2
import numpy as np

# 读取图像
image = cv2.imread('input.jpg')

# 转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 定义卷积核
kernel = np.array([[-2, -1, 0],
                   [-1,  1, 1],
                   [ 0,  1, 2]])

# 应用卷积核
emboss_image = cv2.filter2D(gray_image, -1, kernel)

# 保存浮雕图像
cv2.imwrite('emboss_output.jpg', emboss_image)

# 显示浮雕图像
cv2.imshow('Emboss Image', emboss_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码解析:

  • cv2.cvtColor(image, cv2.COLOR_BGR2GRAY):将图像转换为灰度图像。

  • cv2.filter2D(gray_image, -1, kernel):应用卷积核,生成浮雕效果。

4、模糊滤镜

模糊滤镜通过平滑图像,减少图像中的噪声和细节。

实例

import cv2

# 读取图像
image = cv2.imread("path/to/image.jpg")

# 模糊滤镜
blurred_image = cv2.GaussianBlur(image, (15, 15), 0)

# 显示结果
cv2.imshow("Blur Filter", blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

5、锐化滤镜

锐化滤镜通过增强图像的边缘,使图像更加清晰。

实例

import cv2
import numpy as np

# 读取图像
image = cv2.imread("path/to/image.jpg")

# 锐化滤镜
sharpen_kernel = np.array([[0, -1, 0],
                           [-1, 5, -1],
                           [0, -1, 0]])
sharpened_image = cv2.filter2D(image, -1, sharpen_kernel)

# 显示结果
cv2.imshow("Sharpen Filter", sharpened_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

6、边缘检测滤镜

边缘检测滤镜通过检测图像中的边缘,突出显示物体的轮廓。

实例

import cv2

# 读取图像
image = cv2.imread("path/to/image.jpg")

# 转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 边缘检测滤镜
edges_image = cv2.Canny(gray_image, 100, 200)

# 显示结果
cv2.imshow("Edges Filter", edges_image)
cv2.waitKey(0)
cv2.destroyAllWindows()


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



42 次浏览
3次