Python OpenCV实现3种滤镜效果实例

关于“Python OpenCV实现3种滤镜效果实例”的完整攻略,我会提供以下几个方面的说明:

1. 准备工作

在开始本项目之前,我们需要先进行一些准备工作:

  • 安装Python
  • 安装OpenCV库
  • 下载示例图片

可以参考以下链接安装Python和OpenCV库:

示例图片可以在 GitHub仓库 中下载。

2. 灰度滤镜

2.1 实现过程

首先,我们导入所需的库:

import cv2

然后读入图片:

img = cv2.imread('example.jpg')

我们还需要将图像转换为灰色。这可以使用以下代码完成:

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

接下来,显示图像。这可以使用以下代码完成:

cv2.imshow('gray', gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.2 示例说明

我们使用的样例图片是一张色彩丰富的风景照片。通过灰度滤镜,我们将其转换为一张黑白图片,可以更好地凸显出原图的构图和结构。

3. 怀旧滤镜

3.1 实现过程

对于怀旧滤镜,我们需要进行以下几个步骤:

  • 读取图像
  • 将图像转换为灰色
  • 将图像转换为怀旧效果

代码如下:

img = cv2.imread('example.jpg')

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

h, w = img.shape[:2]
img = cv2.resize(img, (w//2, h//2))

dst = cv2.addWeighted(img, 0.8, cv2.GaussianBlur(img, (101, 101), 0), 0.2, 30)

cv2.imshow('nostalgic',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

3.2 示例说明

我们使用的样例图片是一张生活场景的照片。通过怀旧滤镜,我们将其转换成为一张带有老照片色彩的照片,更好地体现出场景的历史感和温情脉脉。

4. 条纹滤镜

4.1 实现过程

对于条纹滤镜,我们需要进行以下几个步骤:

  • 读取图像
  • 将图像转换为灰色
  • 对图像进行条纹滤镜处理
  • 显示图片

代码如下:

img = cv2.imread('example.jpg')

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

img_width, img_height = gray.shape[:2]
mask = 128 * (1 + cv2.resize(cv2.GaussianBlur(np.random.randn(img_width, img_height), (11, 11), 0), (img_height, img_width)))

dst = np.zeros_like(gray)
dst = cv2.addWeighted(gray, 1, mask, 0.5, 0, dst)

cv2.imshow('striped',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

4.2 示例说明

我们使用的样例图片是一张羊。通过条纹滤镜,我们为这张图片添加了一些条纹纹理,让图片看起来更加生动和有趣。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python OpenCV实现3种滤镜效果实例 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • TensorFlow 输出checkpoint 中的变量名与变量值方式

    TensorFlow 可以把某个时间点的模型保存到 checkpoint 文件。可以使用 TensorBoard 来可视化 checkpoint,或者通过 TensorFlow API 以编程方式获取 checkpoint 中变量的值。下面分步骤详细讲解 TensorFlow checkpoint 输出变量名和变量值的方式。 1. TensorFlow ch…

    人工智能概论 2023年5月24日
    00
  • 树莓派(python)与arduino串口通信的详细步骤

    下面是树莓派和Arduino串口通信的详细步骤。 准备工作 首先,需要准备以下材料和工具: 树莓派和Arduino Uno开发板 USB数据线 Arduino IDE软件 Python编程环境 确定通信端口 将Arduino连接到树莓派,打开终端输入以下命令,查看Arduino的串口号: ls /dev/ttyACM* 如果连了多个串口设备,可能会显示多个串…

    人工智能概览 2023年5月25日
    00
  • 详解Django将秒转换为xx天xx时xx分

    下面是详解Django将秒转换为xx天xx时xx分的完整攻略。 1. 背景与需求 在开发网站过程中,我们经常需要将秒转换为更友好的时间格式,比如 xx天xx时xx分,这在Django中十分常见。因此,在此我们提供一种Django转换秒数的方法,方便大家进行时间转换。 2. 实现思路: 首先,我们从传入的秒数开始,通过除法和取余的方法计算天数、小时、分钟和秒数…

    人工智能概论 2023年5月25日
    00
  • Java程序员应该学习哪些技术

    Java程序员应该学习哪些技术 对于Java程序员来说,掌握一些其他技术能够更好地辅助我们编写好的代码,提高自己的开发能力和竞争力。以下是一些值得学习的技术: 一、大数据相关技术 1.1 Hadoop Hadoop 是一个处理大型数据集的框架。它允许分布式处理大型数据集,使数据在集群上进行并行处理。学习Hadoop有利于Java程序员更好地理解并发编程,加深…

    人工智能概览 2023年5月25日
    00
  • VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解

    我将为您详细讲解在VPS CentOS上配置python、MySQL、nginx、uwsgi和Django的方法。 安装 Python 和 MySQL 首先,我们需要在VPS CentOS中安装Python和MySQL。在终端运行以下命令: sudo yum install python3 sudo yum install mysql-server mysq…

    人工智能概览 2023年5月25日
    00
  • 解决Pytorch半精度浮点型网络训练的问题

    解决 Pytorch 半精度浮点型网络训练的问题需要注意以下几点: 使用合适的半精度浮点类型 防止数值溢出 对于早期的 Pytorch 版本,需要额外安装 apex 库 下面我会详细讲解具体的攻略。 使用合适的半精度浮点类型 Pytorch 提供了两种半精度浮点类型:torch.float16 和 torch.bfloat16,前者占用 16 位,后者占用 …

    人工智能概论 2023年5月25日
    00
  • tornado+celery的简单使用详解

    下面我来为你详细讲解“tornado+celery的简单使用详解”的完整攻略。 概述 Tornado是一个使用Python语言编写的Web框架,它使用非阻塞的IO处理请求,高效稳定。而Celery是一个使用Python编写的分布式任务队列,在实现异步任务的同时保证高并发和可伸缩性。 将Tornado与Celery组合使用可以有效地提升Web应用的性能。本文将…

    人工智能概览 2023年5月25日
    00
  • python使用socket实现图像传输功能

    我会详细讲解“python使用socket实现图像传输功能”的完整攻略,下面是具体的步骤: 1. 创建服务器端代码 首先,在服务器端代码中需要完成以下操作: 1.1. 导入socket库 import socket 1.2. 创建socket对象 server_socket = socket.socket() 1.3. 绑定ip地址和端口号 server_s…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部