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

yizhihongxing

关于“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日

相关文章

  • 在OpenCV里使用特征匹配和单映射变换的代码详解

    要实现在OpenCV中使用特征匹配和单映射变换的代码,可以按照以下流程进行: 导入图像并调整大小 可以使用OpenCV中的cv2.imread()方法导入图片,其中第二个参数表示读取图片的颜色格式,通常使用cv2.IMREAD_COLOR或cv2.IMREAD_GRAYSCALE。读入后,可以使用cv2.resize()调整大小。 示例代码: import …

    人工智能概论 2023年5月25日
    00
  • 实例详解SpringBoot+nginx实现资源上传功能

    下面我将详细讲解“实例详解SpringBoot+nginx实现资源上传功能”的完整攻略。 1. 背景介绍 近年来,随着网络技术的快速发展,互联网已经成为人们生活中不可或缺的一部分。随之而来的是海量的数据和文件需要上传和存储,因此资源上传功能逐渐变得非常重要。 本文将介绍如何使用SpringBoot和nginx实现资源上传功能的详细步骤。 2. 实现步骤 2.…

    人工智能概览 2023年5月25日
    00
  • JavaScript JSON使用原理及注意事项

    JavaScript JSON是一种轻量级的数据格式,用于传输和存储数据。在实际开发过程中,我们经常需要使用JSON数据格式进行数据交换和传输。本文将详细讲解JavaScript JSON的使用原理及注意事项。 JSON概述 JSON全称JavaScript Object Notation,它是一种轻量级的数据格式,由Douglas Crockford于20…

    人工智能概论 2023年5月25日
    00
  • Python实现计算AUC的示例代码

    当我们需要度量一个分类模型的性能时,我们经常会使用一些指标,比如准确率,召回率和F1-Score等。其中,AUC (Area Under the ROC Curve) 指标比较适合用于分类器在非平衡(不同类别样本数量有差别)数据集上进行评价。本文将会提供一个Python示例,展示如何使用一些常用的Python库来计算模型的AUC。 实现AUC的计算 要计算A…

    人工智能概论 2023年5月25日
    00
  • 流行的软件测试工具介绍

    流行的软件测试工具介绍 在软件开发和测试过程中,使用合适的测试工具可以提高测试效率和测试质量。以下是一些流行的软件测试工具的介绍及其使用场景和示例。 功能测试工具 1. Selenium Selenium 是一款功能测试工具,可以模拟用户在多种不同浏览器上操作网页,支持多种开发语言。例如,可以使用 Selenium 对网站进行自动化测试,验证网站是否符合用户…

    人工智能概论 2023年5月25日
    00
  • 基于Docker安装与部署Zabbix

    基于Docker安装与部署Zabbix Zabbix是一款流行的监控及报警系统,可以对服务器、网络设备、数据库等进行性能监控、事件管理、报警等操作。本攻略将介绍如何基于Docker快速部署Zabbix。 1. 安装Docker 在安装和使用Docker之前,您需要在服务器上安装Docker Engine。您可以在以下网址上找到Docker的安装方式: 官方网…

    人工智能概览 2023年5月25日
    00
  • Nginx反向代理学习实例教程

    当谈到Nginx时,最常被提到的就是它作为一个反向代理的功能。反向代理在现代网络架构中扮演着非常重要的角色,因为它可以允许多个服务器在后端工作,但在前端仅暴露一个出口。这也有助于提高系统的可扩展性和安全性。 以下是Nginx反向代理的学习实例教程,它会带你从头开始学习如何使用Nginx来实现反向代理。 技能要求 在深入学习Nginx反向代理之前,需要掌握以下…

    人工智能概览 2023年5月25日
    00
  • 使用VS Code进行Qt开发的实现

    使用VS Code进行Qt开发需要以下步骤: 步骤1:环境准备 在使用VS Code进行Qt开发前,我们需要安装以下几个软件或组件: Qt SDK: 下载Qt官网提供的SDK安装包,然后按照提示进行安装。 Visual Studio Code: 下载安装最新版本Visual Studio Code。 C++插件: 在Visual Studio Code的插件…

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