当前位置: 首页 > news >正文

flask+opencv+实时滤镜(原图、黑白、怀旧、素描)

简介:滤镜,主要是用来实现图像的各种特殊效果。图像滤镜用于改变图像的视觉效果,使其具有特定的风格。下面是这三种滤镜的详细说明:

1、黑白(Grayscale):黑白滤镜将彩色图像转换为灰度图像,即只包含灰度信息的图像。这种滤镜去除了图像的色彩,使其只保留亮度信息。黑白滤镜通常用于模拟老式照片,或者在某些场景中突出图像的纹理和形状。

2、怀旧(Sepia):怀旧滤镜(又称为 Sepia 滤镜)将彩色图像转换为具有特定色调的图像。怀旧滤镜通常使用暖色调(如褐色和黄色)来模拟古老照片的外观。这种滤镜可以给图像带来一种复古和温暖的感觉。

3、素描(Sketch):素描滤镜将彩色图像转换为类似手绘素描的图像。这种滤镜通常用于强调图像中的边缘和轮廓,使其看起来像是使用铅笔或其他绘画工具绘制的。素描滤镜可以使图像具有一种独特的艺术风格。

这些滤镜可以使图像看起来更具特色,也可以用于特定的艺术效果或视觉表达。在很多图像处理应用和软件中,这些滤镜都是常见的基本功能。

历史攻略:

flask+opencv:实时视频直播推流平台Demo

python:彩色照转黑白照

Python:使用cv2模块快速生成素描

案例源码:

# -*- coding: utf-8 -*-
# time: 2023/5/3 18:29
# file: RealTimeFilter.py
# 公众号: 玩转测试开发
import cv2
import numpy as np
from flask import Flask, Responseapp = Flask(__name__)def apply_sepia_filter(frame):sepia_filter = np.array([[0.272, 0.534, 0.131],[0.349, 0.686, 0.168],[0.393, 0.769, 0.189]])sepia_frame = cv2.transform(frame, sepia_filter)return sepia_framedef apply_sketch_filter(frame):gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)inv_gray_frame = cv2.bitwise_not(gray_frame)blur_frame = cv2.GaussianBlur(inv_gray_frame, (13, 13), 0)sketch_frame = cv2.divide(gray_frame, 255 - blur_frame, scale=256)return cv2.cvtColor(sketch_frame, cv2.COLOR_GRAY2BGR)def apply_filter(frame):gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)gray_frame = cv2.cvtColor(gray_frame, cv2.COLOR_GRAY2BGR)sepia_frame = apply_sepia_filter(frame)sketch_frame = apply_sketch_filter(frame)row1_frame = cv2.hconcat([frame, gray_frame])row2_frame = cv2.hconcat([sepia_frame, sketch_frame])combined_frame = cv2.vconcat([row1_frame, row2_frame])return combined_framedef generate_frames():cap = cv2.VideoCapture(0)while True:ret, frame = cap.read()if not ret:breakfiltered_frame = apply_filter(frame)_, buffer = cv2.imencode('.jpg', filtered_frame)frame = buffer.tobytes()yield (b'--frame\r\n'b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')cap.release()@app.route('/video_feed')
def video_feed():return Response(generate_frames(),mimetype='multipart/x-mixed-replace; boundary=frame')@app.route('/')
def index():return """<!DOCTYPE html><html><head><title>Real-time Filter Application</title><style>body, html {margin: 0;padding: 0;height: 100%;width: 100%;}.video-container {width: 100%;height: calc(100% - 40px);display: flex;justify-content: center;align-items: center;}img {display: block;max-width: 100%;max-height: 100%;}.container {display: flex;flex-direction: column;justify-content: center;align-items: center;height: 100%;width: 100%;}.row {display: flex;width: 100%;}.column {flex: 50%;}
</style></head><body><div class="container"><div class="video-container"><img src="/video_feed" alt="Video stream not available"></div></div></body></html>"""if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)

运行结果:

在这里插入图片描述

相关文章:

flask+opencv+实时滤镜(原图、黑白、怀旧、素描)

简介&#xff1a;滤镜&#xff0c;主要是用来实现图像的各种特殊效果。图像滤镜用于改变图像的视觉效果&#xff0c;使其具有特定的风格。下面是这三种滤镜的详细说明&#xff1a; 1、黑白&#xff08;Grayscale&#xff09;&#xff1a;黑白滤镜将彩色图像转换为灰度图像&…...

【SCI征稿】极速送审,中科院2区(TOP)计算机算法类SCI,数据库稳定检索19年

算法类&#xff1a; 检索年份&#xff1a;数据库稳定检索19年 自引率&#xff1a;14.50% 国人占比&#xff1a;22.78% 期刊简介&#xff1a;IF&#xff1a;8.0-9.0&#xff0c;JCR1区&#xff0c;中科院2区&#xff08;TOP&#xff09; 检索情况&#xff1a;SCI&EI 双…...

1992-2022年31省GDP、第一产业增加值、第二产业增加值 第三产业增加值

1992-2022年31省GDP、第一产业增加值、第二产业增加值 第三产业增加值 1、时间&#xff1a;1992-2022年 2、范围&#xff1a;包括31省 3、指标&#xff1a;省GDP、省第一产业增加值、省第二产业增加值、省第三产业增加值 4、缺失情况说明&#xff1a;无缺失 5、来源&#…...

100种思维模型之万物系统思维模型-57

前面我们介绍过 “万物联系思维模型” &#xff0c;即万物之间存有各种各样的联系&#xff0c;在解决问题时要看到事物之间的连接&#xff0c;并找到关键的连接&#xff0c;继而快速的解决问题。 01 何谓万物系统思维模型 一、万物系统思维 人的思维习惯&#xff0c; 一…...

Java 中的包装类是什么?如何使用包装类来操作基本数据类型(二十二)

Java 中的包装类是一种特殊的类&#xff0c;用来将基本数据类型&#xff08;如 int、double、char 等&#xff09;包装成对象。包装类的作用是可以让基本数据类型具有对象的特性&#xff0c;比如可以作为参数传递给泛型类或方法&#xff0c;可以调用对象的方法&#xff0c;可以…...

【Python入门】Pycharm的使用指南

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于Python零基础入门系列&#xff0c;本专栏主要内容为Python基础语法、判断、循环语句、函…...

python搭建HaIcon物联平台!

Python是一种高级编程语言,易于学习和理解。它在各个领域都有着广泛的应用,例如数据科学、机器学习、爬虫等。 在Python的强大功能之外,Python还有着丰富的第三方库和框架,其中之一就是HaIcon。HaIcon是一种基于Python的物联网平台,它提供了完整的解决方案,包括设备管理…...

GUI编程(二)

Swing Swing是GUI&#xff08;图形用户界面&#xff09;开发工具包。 早期的AWT&#xff08;抽象窗口工具包&#xff09;组件开发的图形用户界面&#xff0c;要依赖本地系统&#xff0c;当把AWT组件开发的应用程序移植到其他平台的系统上运行时&#xff0c;不能保证其外观风格…...

俩小伙一晚上写了个 AI 应用,月入两万??(文末附开发教程)

开发出一款能够与 AI 对话生成和编辑思维导图的工具&#xff0c;听起来似乎只能是一群专业的 AI 背景团队花费大量的时间和精力训练模型&#xff0c;打磨应用才能完成的事情。 但是&#xff0c;两名大学生却在一夜之间完成了&#xff0c;就像炼金术士将庸俗的材料转化成黄金一…...

Python爬虫常用框架

大家都知道python是一门多岗位编程语言&#xff0c;学习python之后可以从事的岗位有很多&#xff0c;python爬虫便在其中&#xff0c;不过很多人对python不是很了解&#xff0c;所以也不知道python爬虫是什么&#xff0c;接下来小编为大家介绍一下。 Python是一门非常适合开发…...

2023亚马逊云科技研究,数字化技能为中国企业和员工带来经济效益

在中国&#xff0c;信息技术在个人、企业和宏观经济层面都推动着重大变革。为了研究这些变化所带来的影响&#xff0c;盖洛普咨询公司(Gallup)和亚马逊云科技开展了关于数字化技能的调研。 研究表明&#xff0c;数字化技能正在为中国企业和在职人员带来巨大的经济价值&#x…...

springboot使用mybatis

扫描mapper接口的位置&#xff0c;生成代理对象 在application.properties配置数据源 测试: 在application.properties配置mybaits&#xff0c;支持驼峰命名&#xff0c;下划线 结果映射: Insert语句例子 在application.properties配置日志 更新 总结: 结果复用 ResultMap第二种…...

为什么是三次握手和四次挥手

文章目录 为什么是三次握手为什么是四次挥手什么是TIME_WAIT状态解决TIME_WAIT状态引起的bind失败的方法 为什么是三次握手 因为这是双方都有收发的最小次数 握手的目的&#xff1a;确认网络好着没&#xff0c;对方好着没 确认双方主机是否健康&#xff08;双方&#xff09;…...

Codeforces Round 867 (Div 3) 总结

文章目录 ABCDE 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 Dashboard - Codeforces Round 867 (Div. 3) - Codeforces A 题目大意&#xff1a;有n个电视节目&#xff0c;每个电视节目占据一定的时间&#xff0c;并且具有一个娱乐值&#xff0c;一秒可以额换一次台…...

vue修饰符的使用

事件修饰符&#xff1a; 在处理事件时调用 event.preventDefault() 或 event.stopPropagation() 是很常见的。尽管我们可以直接在方法内调用&#xff0c;但如果方法能更专注于数据逻辑而不用去处理 DOM 事件的细节会更好。 为解决这一问题&#xff0c;Vue 为 v-on 提供了事件…...

2023年五一数学建模 B 题过程与结果

文章目录 第一问第二问数据时序分析Auto-ARIMA第二问求解解的情况A->Q:D-> AQ-V总快递数 第三问第四问遗传算法求解 第五问SARIMA 模型拟合季节性规律 第一问 见 2023 年 五一杯 B 题过程 代码&#xff08;第一问&#xff09; 第二问 第二问考虑是一个时序预测问题&a…...

搞懂 API ,API 中 URI 设计规范分享

API&#xff08;Application Programming Interface&#xff09;是现代软件开发中的一项关键技术&#xff0c;它为不同应用程序间提供了数据和功能交互的标准化方式。而 URI&#xff08;Uniform Resource Identifier&#xff09;作为 API 中的重要部分&#xff0c;其规范和良好…...

【DarkLabel】使用教程(标注MOT数据集)

DarkLabel 使用教程 功能部分 Open video 第 2 处的内容为数据集类型。例如&#xff1a;VOC、COCO、MOT、YOLO等。 第 3 处的内容为标签名称。 可在 darklabel.yml 中修改 classes_set。例如&#xff1a;classes_set: "mot_classes" 第 4 处的内容为两种跟踪方法…...

Python3 迭代器与生成器

Python3 中的迭代器和生成器是 Python 编程中非常重要的概念&#xff0c;它们可以帮助我们更高效地处理数据和管理内存。下面分别介绍一下迭代器和生成器的概念和用法。 ## 迭代器 迭代器是一个可以遍历一个容器&#xff08;如列表或元组&#xff09;中的所有元素的对象&…...

C++基础 类的自动转换和强制类型转换

参考 C Primer Plus (第6版) 类自动转换 接受一个参数的构造函数允许使用赋值语法将对象初始化一个值 Classname object value; 等价于 ClassName object(value); 等价于 ClassName object ClassName(value); 只有接受一个参数的构造函数才能作为转换构造函数(某类型->…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...