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

在gpupixel中自定义锐化filter

文章目录基本的结构自定义头文件自定义源文件修改CMakeLists.txt参考基本的结构classCustomFilter:publicFilter{public:staticstd::shared_ptrCustomFilterCreate();boolInit();virtualboolDoRender(boolupdateSinkstrue)override;// Custom parameter settersvoidsetParameter(floatvalue);protected:CustomFilter(){};// Filter parametersfloat_parameter;};自定义头文件sharpen_filter.h#pragmaonce#includegpupixel/filter/nearby_sampling3x3_filter.h#includegpupixel/gpupixel_define.hnamespacegpupixel{classGPUPIXEL_APISharpenFilter:publicNearbySampling3x3Filter{public:staticstd::shared_ptrSharpenFilterCreate();boolInit();virtualboolDoRender(boolupdateSinkstrue)override;// 锐化强度通常 0.0 到 4.00.0 为原图voidsetSharpness(floatsharpness);protected:SharpenFilter(){};floatsharpness_;};}// namespace gpupixel自定义源文件sharpen_filter.cc#includegpupixel/filter/sharpen_filter.h#includecore/gpupixel_context.hnamespacegpupixel{// 锐化 Shader 逻辑中心像素权重增加周围像素权重减少conststd::string kSharpenFragmentShaderStringR( precision mediump float; uniform sampler2D inputImageTexture; uniform float sharpness; varying vec2 textureCoordinate; varying vec2 vLeftTexCoord; varying vec2 vRightTexCoord; varying vec2 vTopTexCoord; varying vec2 vBottomTexCoord; void main() { vec4 centerColor texture2D(inputImageTexture, textureCoordinate); vec3 leftColor texture2D(inputImageTexture, vLeftTexCoord).rgb; vec3 rightColor texture2D(inputImageTexture, vRightTexCoord).rgb; vec3 topColor texture2D(inputImageTexture, vTopTexCoord).rgb; vec3 bottomColor texture2D(inputImageTexture, vBottomTexCoord).rgb; // 计算周围像素的平均值贡献 // 锐化公式Result Center sharpness * (Center - Average(Surrounding)) vec3 sharpenedColor centerColor.rgb * (1.0 4.0 * sharpness) - (leftColor rightColor topColor bottomColor) * sharpness; gl_FragColor vec4(sharpenedColor, centerColor.a); });std::shared_ptrSharpenFilterSharpenFilter::Create(){autoretstd::shared_ptrSharpenFilter(newSharpenFilter());gpupixel::GPUPixelContext::GetInstance()-SyncRunWithContext([]{if(ret!ret-Init()){ret.reset();}});returnret;}boolSharpenFilter::Init(){if(!InitWithFragmentShaderString(kSharpenFragmentShaderString)){returnfalse;}sharpness_0.5;// 默认中等锐化RegisterProperty(sharpness,sharpness_,The sharpness adjustment to apply (0.0 - 4.0),[this](floatsharpness){setSharpness(sharpness);});returntrue;}voidSharpenFilter::setSharpness(floatsharpness){sharpness_sharpness;}boolSharpenFilter::DoRender(boolupdateSinks){filter_program_-SetUniformValue(sharpness,sharpness_);returnNearbySampling3x3Filter::DoRender(updateSinks);}}// namespace gpupixel修改CMakeLists.txt在 common_source_files 列表的 filter 部分建议放在 toon_filter.cc 附近添加你的新文件路径# ... 前面的文件 ...${CMAKE_CURRENT_SOURCE_DIR}/filter/toon_filter.cc${CMAKE_CURRENT_SOURCE_DIR}/filter/sharpen_filter.cc# --- 添加这一行${CMAKE_CURRENT_SOURCE_DIR}/filter/pixellation_filter.cc# ... 后面的文件 ...为了保持项目整洁在下方的 public_filter_header_files 列表中也添加对应的 .h 文件# ...${PROJECT_SOURCE_DIR}/include/gpupixel/filter/toon_filter.h${PROJECT_SOURCE_DIR}/include/gpupixel/filter/sharpen_filter.h# --- 添加这一行${PROJECT_SOURCE_DIR}/include/gpupixel/filter/contrast_filter.h# ...参考https://github.com/pixpark/gpupixel

相关文章:

在gpupixel中自定义锐化filter

文章目录基本的结构自定义头文件自定义源文件修改CMakeLists.txt参考基本的结构 class CustomFilter : public Filter {public:static std::shared_ptr<CustomFilter> Create();bool Init();virtual bool DoRender(bool updateSinks true) override;// Custom paramete…...

【数据集】【YOLOv11】【实例分割】路面积水精准分割数据集实战:从数据标注到城市内涝预警系统部署

1. 路面积水检测为什么需要YOLOv11&#xff1f; 第一次接触路面积水检测项目时&#xff0c;我用的是传统图像处理方法&#xff0c;结果被现实狠狠打脸。凌晨三点调试边缘检测算法&#xff0c;却发现雨天反光的路面让程序把每个水坑都识别成了"可疑物体"。这种经历让我…...

Win10下用VS2013编译LASTools避坑指南:从下载到测试全流程

Win10下用VS2013编译LASTools避坑指南&#xff1a;从下载到测试全流程 编译开源工具链时遇到的"玄学问题"&#xff0c;往往让开发者抓狂。LASTools作为激光雷达点云处理的瑞士军刀&#xff0c;其Windows平台编译过程尤其考验耐心。本文将带你完整走通从源码下载到测试…...

无人机精准降落进阶:OpenMV与Pixhawk的Mavlink通信全解析

无人机精准降落进阶&#xff1a;OpenMV与Pixhawk的Mavlink通信全解析 在无人机技术快速发展的今天&#xff0c;精准降落已成为工业级应用的关键能力。无论是物流配送、农业喷洒还是应急救援&#xff0c;精确到厘米级的降落控制都能显著提升作业效率和安全性。本文将深入探讨基于…...

多因素方差分析在金融信贷评估中的应用实践

1. 为什么金融信贷需要多因素方差分析 想象一下你是一位银行信贷审批员&#xff0c;每天要处理上百份贷款申请。有的客户提供房产抵押&#xff0c;有的找担保公司作保&#xff0c;还有的只凭个人信用。他们的信用记录也各不相同&#xff0c;有的按时还款从无逾期&#xff0c;有…...

Whisper语音识别镜像应用场景:自媒体博主批量生成视频字幕

Whisper语音识别镜像应用场景&#xff1a;自媒体博主批量生成视频字幕 1. 引言 1.1 自媒体博主的字幕困境 如果你是自媒体博主&#xff0c;一定经历过这样的场景&#xff1a;精心拍摄剪辑的视频终于完成&#xff0c;最后却卡在了字幕制作上。一条10分钟的视频&#xff0c;手…...

yyds!一个大模型的新方向,彻底爆发了!!2026年AI风口!掌握这3项技能,年薪百万不是梦!

文章指出2026年AI行业的最大机会在于应用层&#xff0c;企业纷纷布局Agent和大模型岗位需求激增。文章强调AI应用开发需要掌握RAG、Agent智能体和微调三项核心能力&#xff0c;并指出具备AI能力的程序员收入远超传统开发。文章推荐了一门《大模型应用开发实战训练》课程&#x…...

2026开发者实测:四大AI大模型API聚合网关SLA与延迟对决

搞AI开发的兄弟们&#xff0c;今年算力价格战打得很猛。GPT-5.4出了&#xff0c;Claude Opus 4.6和Sonnet 4.6也相继登场&#xff0c;官方单价确实降了。但作为一线开发者&#xff0c;大家心里都清楚&#xff0c;真正折磨人的是“管道成本”。 你写个Agent&#xff0c;跑10次调…...

RexUniNLU多场景落地实践:教育/金融/政务/电商/医疗五大领域案例

RexUniNLU多场景落地实践&#xff1a;教育/金融/政务/电商/医疗五大领域案例 想象一下&#xff0c;你手头有一堆杂乱无章的文档、客服聊天记录、用户评论&#xff0c;需要从中快速提取关键信息、分类归档、分析情感。传统方法要么需要大量人工标注&#xff0c;要么需要针对每个…...

智能控制Discord机器人:LiveBot高效管理解决方案

智能控制Discord机器人&#xff1a;LiveBot高效管理解决方案 【免费下载链接】LiveBot An app that allows you to be inside a bot! 项目地址: https://gitcode.com/gh_mirrors/li/LiveBot 核心价值&#xff1a;为何选择LiveBot重塑机器人管理体验&#xff1f; 在Disc…...

在服务器刻符咒:运维不敢碰的机柜——软件测试视角下的技术黑洞与破局之道

当玄学入侵测试生态在软件测试领域&#xff0c;环境完整性是保障覆盖率和缺陷检测的基石。然而&#xff0c;现实中存在一种隐形威胁&#xff1a;运维人员在故障频发的服务器机柜刻下符咒&#xff0c;将其列为“禁区”&#xff0c;导致测试团队被迫绕行。这种现象不仅源于人类心…...

人脸关键点数据集:从基础到前沿的全面解析

1. 人脸关键点检测的基础概念 第一次接触人脸关键点检测时&#xff0c;我盯着屏幕上那些密密麻麻的小点看了半天。这些看似简单的坐标点&#xff0c;实际上是人脸分析技术的基石。简单来说&#xff0c;关键点就是人脸各个部位的"地标"&#xff0c;比如眼角、嘴角、鼻…...

GPT-SoVITS实战教程:如何用少量语音样本制作个性化AI语音助手

GPT-SoVITS实战教程&#xff1a;如何用少量语音样本制作个性化AI语音助手 想不想拥有一个能模仿你声音的AI助手&#xff1f;让它帮你朗读文章、回复消息&#xff0c;甚至用你的声音讲故事&#xff1f;以前这可能需要专业录音棚和复杂的算法&#xff0c;但现在&#xff0c;只需…...

揭秘 JDHotKey:京东如何毫秒级感知并驯服“热 Key”风暴

在“双 11”、“618”等大型促销活动中&#xff0c;电商平台的流量洪峰往往集中在少数几个商品、活动页或用户上&#xff0c;形成所谓的“热点”。这些热点数据对应的缓存 Key&#xff08;热 Key&#xff09;会瞬间承受远超平常的访问压力。如果处理不当&#xff0c;轻则导致 R…...

当Skype遇上BitTorrent:用SAE+CNN双模型实战加密流量精细识别

双模型协同&#xff1a;SAECNN在加密流量精细识别中的实战解析 网络流量分类技术正面临前所未有的挑战——传统基于端口或有效载荷检测的方法在加密流量面前几乎失效。当Skype的VoIP数据包与BitTorrent的P2P传输共享相同的加密外衣时&#xff0c;网络管理员需要更智能的"透…...

GME多模态向量-Qwen2-VL-2B完整指南:支持中文/英文/混合文本的多语言向量生成

GME多模态向量-Qwen2-VL-2B完整指南&#xff1a;支持中文/英文/混合文本的多语言向量生成 你是不是经常遇到这样的问题&#xff1a;想找一张图&#xff0c;但只能用文字描述&#xff0c;结果搜出来的图片总是不对劲&#xff1f;或者有一堆文档和图片混在一起&#xff0c;想快速…...

重塑个人任务管理:My-TODOs赋能高效生活新方式

重塑个人任务管理&#xff1a;My-TODOs赋能高效生活新方式 【免费下载链接】My-TODOs A cross-platform desktop To-Do list. 跨平台桌面待办小工具 项目地址: https://gitcode.com/gh_mirrors/my/My-TODOs 在信息爆炸的数字时代&#xff0c;每个人都在与时间赛跑。My-T…...

【超详细】2026年3月OpenClaw(Clawdbot)本地8分钟超简单集成流程

【超详细】2026年3月OpenClaw&#xff08;Clawdbot&#xff09;本地8分钟超简单集成流程。 OpenClaw&#xff08;前身为Clawdbot/Moltbot&#xff09;作为开源、本地优先的AI助理框架&#xff0c;凭借724小时在线响应、多任务自动化执行、跨平台协同等核心能力&#xff0c;成为…...

齐次坐标与变换矩阵在计算机图形学中的应用

1. 齐次坐标&#xff1a;让3D图形操作更简单的数学魔法 第一次接触齐次坐标时&#xff0c;我也被这个"多一维"的概念搞糊涂了。直到在Unity引擎里调试一个摄像机跟随功能时&#xff0c;突然理解了它的精妙之处——当时我无论如何都无法让物体平移和旋转同时生效&…...

OpenClaw多模型路由策略:GLM-4.7-Flash与轻量模型智能切换

OpenClaw多模型路由策略&#xff1a;GLM-4.7-Flash与轻量模型智能切换 1. 为什么需要多模型路由 去年冬天&#xff0c;当我第一次用OpenClaw自动整理电脑上的照片时&#xff0c;发现一个有趣的现象&#xff1a;简单的文件分类任务消耗的Token量&#xff0c;竟然和写一篇技术博…...

智能体落地:先搭框架,再填功能

很多人一上手做智能体,就急着去拼模型、接工具、跑流程,一门心思先让它“看起来很能干”。但真正做过企业级落地、走过完整生命周期的人都清楚:方向完全反了。 一个能稳定上线、安全可控、可以长期迭代、规模化复用的智能体,第一步永远不是实现功能,而是先搭建一套完整的…...

Vercel+Railway+Zeabur多平台部署Typecho动态博客实战指南(附避坑技巧)

1. 为什么选择VercelRailwayZeabur部署Typecho&#xff1f; Typecho作为轻量级博客系统&#xff0c;很多开发者都遇到过传统虚拟主机性能不足或云服务器配置复杂的问题。我最初用共享虚拟主机部署Typecho时&#xff0c;经常遇到502错误和数据库连接中断&#xff0c;直到尝试了S…...

PostgreSQL保姆级下载安装指南

目录 前言 一、前置准备&#xff1a;版本选择与核心说明 1.1 版本选择建议 1.2 核心前置依赖 二、分平台标准安装步骤 2.1 Linux 系统安装&#xff08;生产环境首选&#xff09; 2.1.1 Debian/Ubuntu 系列&#xff08;Ubuntu 20.04/22.04/24.04、Debian 11/12&#xff0…...

Bidili Generator助力内容创作:批量生成社交媒体配图方案

Bidili Generator助力内容创作&#xff1a;批量生成社交媒体配图方案 1. 引言&#xff1a;当社交媒体运营遇上“配图焦虑” 每天打开电脑&#xff0c;第一件事不是写文案&#xff0c;而是找配图——这可能是很多社交媒体运营、内容创作者和自媒体人的真实写照。 高质量、风格…...

AudioSeal Pixel Studio完整指南:AudioSeal与传统LSB水印技术对比

AudioSeal Pixel Studio完整指南&#xff1a;AudioSeal与传统LSB水印技术对比 1. 引言&#xff1a;当声音需要“隐形身份证” 想象一下&#xff0c;你是一位音乐制作人&#xff0c;辛苦创作的Demo在发给合作方后&#xff0c;没过几天就在网上听到了未经授权的片段。或者&…...

MATLAB与AI结合:调用Z-Image-Turbo模型进行科学可视化图像生成

MATLAB与AI结合&#xff1a;调用Z-Image-Turbo模型进行科学可视化图像生成 1. 引言 如果你经常和MATLAB打交道&#xff0c;尤其是在做科研或者工程项目&#xff0c;肯定遇到过这样的烦恼&#xff1a;辛辛苦苦跑完仿真&#xff0c;得到了一大堆数据&#xff0c;最后生成的可视…...

CSS实战:如何用Flexbox完美解决不同大小字体底部对齐问题(附代码示例)

CSS实战&#xff1a;用Flexbox实现多尺寸字体精准底部对齐 在网页排版中&#xff0c;混合使用不同字号是常见的设计需求——比如价格数字需要突出显示&#xff0c;而单位需要缩小呈现。但当这些元素需要纵向对齐时&#xff0c;开发者往往会遇到一个经典难题&#xff1a;如何让不…...

保姆级教程:用Go-libp2p的Circuit Relay V2协议,5分钟搞定内网穿透聊天应用

5分钟构建基于Go-libp2p的穿透聊天工具&#xff1a;Circuit Relay V2实战指南 想象一下&#xff0c;你和同事分别坐在不同公司的内网环境中&#xff0c;却想快速搭建一个无需服务器中转的加密聊天工具。传统方案需要复杂的端口映射或第三方服务&#xff0c;而今天我们要用Go-li…...

如何构建可扩展的AI图像修复系统:IOPaint架构解析与定制实践

如何构建可扩展的AI图像修复系统&#xff1a;IOPaint架构解析与定制实践 【免费下载链接】IOPaint 项目地址: https://gitcode.com/GitHub_Trending/io/IOPaint 在AI图像修复领域&#xff0c;开发者常面临三大核心挑战&#xff1a;模型适配困难、扩展性受限、以及特定场…...

企微AI回复稳定性指南:高可用架构与监控体系构建

摘要 &#x1f4dd;企微AI智能回复上线后&#xff0c;稳定性成为最大挑战&#xff1a;消息丢失、重复回复、超时失败、上下文串扰等问题频发。本文从生产级视角出发&#xff0c;提出企微AI回复高可用架构方案&#xff0c;涵盖消息去重、会话隔离、限流熔断、监控告警四大核心模…...