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

学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、FilmPass渲染通道)

👨‍⚕️ 主页: gis分享者
👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅!
👨‍⚕️ 收录于专栏:threejs gis工程师


文章目录

  • 一、🍀前言
    • 1.1 ☘️THREE.EffectComposer 后期处理
      • 1.1.1 ☘️代码示例
      • 1.1.2 ☘️构造函数
      • 1.1.3 ☘️属性
      • 1.1.4 ☘️方法
    • 1.2 ☘️THREE.RenderPass
      • 1.2.1 ☘️构造函数
      • 1.2.2 ☘️属性
      • 1.2.3 ☘️方法
    • 1.3 ☘️THREE.FilmPass
      • 1.3.1 ☘️构造函数
      • 1.3.2 ☘️属性
      • 1.3.3 ☘️方法
  • 二、🍀使用EffectComposer后期处理组合器(采用RenderPass、FilmPass渲染通道)
    • 1. ☘️实现思路
    • 2. ☘️代码样例


一、🍀前言

本文详细介绍如何基于threejs在三维场景中使用EffectComposer后期处理组合器(采用RenderPass、FilmPass渲染通道),亲测可用。希望能帮助到您。一起学习,加油!加油!

1.1 ☘️THREE.EffectComposer 后期处理

THREE.EffectComposer 用于在three.js中实现后期处理效果。该类管理了产生最终视觉效果的后期处理过程链。 后期处理过程根据它们添加/插入的顺序来执行,最后一个过程会被自动渲染到屏幕上。

1.1.1 ☘️代码示例

import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';
// 初始化 composer
const composer = new EffectComposer(renderer);
// 创建 RenderPass 并添加到 composer
const renderPass = new RenderPass(scene, camera);
composer.addPass(renderPass);
// 添加其他后期处理通道(如模糊)
// composer.addPass(blurPass);
// 在动画循环中渲染
function animate() {composer.render();requestAnimationFrame(animate);
}

1.1.2 ☘️构造函数

EffectComposer( renderer : WebGLRenderer, renderTarget : WebGLRenderTarget )
renderer – 用于渲染场景的渲染器。
renderTarget – (可选)一个预先配置的渲染目标,内部由 EffectComposer 使用。

1.1.3 ☘️属性

.passes : Array
一个用于表示后期处理过程链(包含顺序)的数组。

渲染通道:
BloomPass   该通道会使得明亮区域参入较暗的区域。模拟相机照到过多亮光的情形
DotScreenPass   将一层黑点贴到代表原始图片的屏幕上
FilmPass    通过扫描线和失真模拟电视屏幕
MaskPass    在当前图片上贴一层掩膜,后续通道只会影响被贴的区域
RenderPass  该通道在指定的场景和相机的基础上渲染出一个新的场景
SavePass    执行该通道时,它会将当前渲染步骤的结果复制一份,方便后面使用。这个通道实际应用中作用不大;
ShaderPass  使用该通道你可以传入一个自定义的着色器,用来生成高级的、自定义的后期处理通道
TexturePass 该通道可以将效果组合器的当前状态保存为一个纹理,然后可以在其他EffectCoposer对象中将该纹理作为输入参数

.readBuffer : WebGLRenderTarget
内部读缓冲区的引用。过程一般从该缓冲区读取先前的渲染结果。

.renderer : WebGLRenderer
内部渲染器的引用。

.renderToScreen : Boolean
最终过程是否被渲染到屏幕(默认帧缓冲区)。

.writeBuffer : WebGLRenderTarget
内部写缓冲区的引用。过程常将它们的渲染结果写入该缓冲区。

1.1.4 ☘️方法

.addPass ( pass : Pass ) : undefined
pass – 将被添加到过程链的过程

将传入的过程添加到过程链。

.dispose () : undefined
释放此实例分配的 GPU 相关资源。每当您的应用程序不再使用此实例时调用此方法。

.insertPass ( pass : Pass, index : Integer ) : undefined
pass – 将被插入到过程链的过程。

index – 定义过程链中过程应插入的位置。

将传入的过程插入到过程链中所给定的索引处。

.isLastEnabledPass ( passIndex : Integer ) : Boolean
passIndex – 被用于检查的过程

如果给定索引的过程在过程链中是最后一个启用的过程,则返回true。 由EffectComposer所使用,来决定哪一个过程应当被渲染到屏幕上。

.removePass ( pass : Pass ) : undefined
pass – 要从传递链中删除的传递。

从传递链中删除给定的传递。

.render ( deltaTime : Float ) : undefined
deltaTime – 增量时间值。

执行所有启用的后期处理过程,来产生最终的帧,

.reset ( renderTarget : WebGLRenderTarget ) : undefined
renderTarget – (可选)一个预先配置的渲染目标,内部由 EffectComposer 使用。

重置所有EffectComposer的内部状态。

.setPixelRatio ( pixelRatio : Float ) : undefined
pixelRatio – 设备像素比

设置设备的像素比。该值通常被用于HiDPI设备,以阻止模糊的输出。 因此,该方法语义类似于WebGLRenderer.setPixelRatio()。

.setSize ( width : Integer, height : Integer ) : undefined
width – EffectComposer的宽度。
height – EffectComposer的高度。

考虑设备像素比,重新设置内部渲染缓冲和过程的大小为(width, height)。 因此,该方法语义类似于WebGLRenderer.setSize()。

.swapBuffers () : undefined
交换内部的读/写缓冲。

1.2 ☘️THREE.RenderPass

THREE.RenderPass用于将场景渲染到中间缓冲区,为后续的后期处理效果(如模糊、色调调整等)提供基础。

1.2.1 ☘️构造函数

RenderPass(scene, camera, overrideMaterial, clearColor, clearAlpha)

  • scene THREE.Scene 要渲染的 Three.js 场景对象。
  • camera THREE.Camera 场景对应的相机(如 PerspectiveCamera)。
  • overrideMaterial THREE.Material (可选) 覆盖场景中所有物体的材质(默认 null)。
  • clearColor THREE.Color (可选) 渲染前清除画布的颜色(默认不主动清除)。
  • clearAlpha number (可选) 清除画布的透明度(默认 0)。

1.2.2 ☘️属性

.enabled:boolean
是否启用此通道(默认 true)。设为 false 可跳过渲染。

.clear:boolean
渲染前是否清除画布(默认 true)。若需叠加多个 RenderPass,可设为 false。

.needsSwap:boolean
是否需要在渲染后交换缓冲区(通常保持默认 false)。

1.2.3 ☘️方法

.setSize(width, height)
调整通道的渲染尺寸(通常由 EffectComposer 自动调用)。
width: 画布宽度(像素)。
height: 画布高度(像素)。

1.3 ☘️THREE.FilmPass

THREE.FilmPass是 Three.js 后期处理模块中的一个特效通道,用于模拟电影胶片效果(如扫描线、颗粒噪声和画面抖动)。适用于复古风格或科幻场景的视觉增强。

1.3.1 ☘️构造函数

FilmPass(
noiseIntensity, // 噪声强度
scanlinesIntensity,// 扫描线强度
scanlinesCount, // 扫描线数量
grayscale // 是否转为灰度
)

1.3.2 ☘️属性

.enabled:boolean
是否启用此通道(默认 true)。设为 false 可临时禁用效果。

.uniforms:object
着色器 uniforms 对象,可直接修改参数(动态调整效果):

filmPass.uniforms.nIntensity.value = 0.8; // 调整噪声强度
filmPass.uniforms.sIntensity.value = 0.5; // 调整扫描线强度
filmPass.uniforms.sCount.value = 1024;    // 调整扫描线密度
filmPass.uniforms.grayscale.value = 1;    // 启用灰度(1 是,0 否)

1.3.3 ☘️方法

.setSize(width, height)
调整通道的渲染尺寸(通常由 EffectComposer 自动调用)。
width: 画布宽度(像素)。
height: 画布高度(像素)。

二、🍀使用EffectComposer后期处理组合器(采用RenderPass、FilmPass渲染通道)

1. ☘️实现思路

  • 1、初始化renderer渲染器。
  • 2、初始化Scene三维场景scene。
  • 3、初始化camera相机,定义相机位置 camera.position.set,设置相机方向camera.lookAt。
  • 4、创建THREE.AmbientLight环境光源ambi,创建DirectionalLight平行光源spotLight,设置spotLight位置和光强,scene场景加入ambi和spotLight。
  • 5、加载几何模型:定义createMesh方法(参数:geom 几何对象),用于生成网格对象。调用createMesh方法创建球体网格对象sphere,scene场景添加sphere。创建THREE.RenderPass渲染通道renderPass,创建THREE.FilmPass特效通道effectFilm,设置effectFilm的属性renderToScreen值为true,创建THREE.EffectComposer后期处理组合器composer,composer添加renderPass和effectFilm。定义controls方法,定义gui控制effectFilm特效通道参数以及参数更新方法。定义render方法,实现sphere的旋转动画,调用composer的渲染方法render。具体代码参考下面代码样例。
  • 6、加入gui控制。加入stats监控器,监控帧数信息。

2. ☘️代码样例

<!DOCTYPE html>
<html>
<head><title>学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、FilmPass渲染通道)</title><script type="text/javascript" src="../libs/three.js"></script><script type="text/javascript" src="../libs/stats.js"></script><script type="text/javascript" src="../libs/dat.gui.js"></script><script type="text/javascript" src="../libs/OrbitControls.js"></script><script type="text/javascript" src="../libs/postprocessing/ShaderPass.js"></script><script type="text/javascript" src="../libs/shaders/CopyShader.js"></script><script type="text/javascript" src="../libs/postprocessing/EffectComposer.js"></script><script type="text/javascript" src="../libs/postprocessing/MaskPass.js"></script><script type="text/javascript" src="../libs/postprocessing/FilmPass.js"></script><script type="text/javascript" src="../libs/shaders/FilmShader.js"></script><script type="text/javascript" src="../libs/postprocessing/RenderPass.js"></script><style>body {margin: 0;overflow: hidden;}</style>
</head>
<body><div id="Stats-output">
</div>
<!-- Div which will hold the Output -->
<div id="WebGL-output">
</div><!-- Js代码块 -->
<script type="text/javascript">// 初始化function init() {var stats = initStats();// 创建三维场景scenevar scene = new THREE.Scene();// 创建相机cameravar camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);// 创建渲染器webGLRenderer,设置颜色、大小和投影var webGLRenderer = new THREE.WebGLRenderer();webGLRenderer.setClearColor(new THREE.Color(0x000, 1.0));webGLRenderer.setSize(window.innerWidth, window.innerHeight);webGLRenderer.shadowMapEnabled = true;var sphere = createMesh(new THREE.SphereGeometry(10, 40, 40));// 添加球网格对象scene.add(sphere);// 设置相机位置和方向camera.position.x = -10;camera.position.y = 15;camera.position.z = 25;camera.lookAt(new THREE.Vector3(0, 0, 0));var orbitControls = new THREE.OrbitControls(camera);orbitControls.autoRotate = false;var clock = new THREE.Clock();var ambi = new THREE.AmbientLight(0x181818);scene.add(ambi);var spotLight = new THREE.DirectionalLight(0xffffff);spotLight.position.set(550, 100, 550);spotLight.intensity = 0.6;scene.add(spotLight);// 渲染器webGLRenderer绑定到html要素document.getElementById("WebGL-output").appendChild(webGLRenderer.domElement);var renderPass = new THREE.RenderPass(scene, camera);var effectFilm = new THREE.FilmPass(0.8, 0.325, 256, false);// 若作为最后一个通道,需设置 renderToScreen: true(否则后续通道无法显示)effectFilm.renderToScreen = true;var composer = new THREE.EffectComposer(webGLRenderer);composer.addPass(renderPass);composer.addPass(effectFilm);// setup the control guivar controls = new function () {this.scanlinesCount = 256;this.grayscale = false;this.scanlinesIntensity = 0.3;this.noiseIntensity = 0.8;this.updateEffectFilm = function () {effectFilm.uniforms.grayscale.value = controls.grayscale;effectFilm.uniforms.nIntensity.value = controls.noiseIntensity;effectFilm.uniforms.sIntensity.value = controls.scanlinesIntensity;effectFilm.uniforms.sCount.value = controls.scanlinesCount;};};var gui = new dat.GUI();gui.add(controls, "scanlinesIntensity", 0, 1).onChange(controls.updateEffectFilm);gui.add(controls, "noiseIntensity", 0, 3).onChange(controls.updateEffectFilm);gui.add(controls, "grayscale").onChange(controls.updateEffectFilm);gui.add(controls, "scanlinesCount", 0, 2048).step(1).onChange(controls.updateEffectFilm);// call the render functionvar step = 0;render();function createMesh(geom) {var planetTexture = THREE.ImageUtils.loadTexture("../assets/textures/planets/Earth.png");var specularTexture = THREE.ImageUtils.loadTexture("../assets/textures/planets/EarthSpec.png");var normalTexture = THREE.ImageUtils.loadTexture("../assets/textures/planets/EarthNormal.png");var planetMaterial = new THREE.MeshPhongMaterial();planetMaterial.specularMap = specularTexture;planetMaterial.specular = new THREE.Color(0x4444aa);planetMaterial.normalMap = normalTexture;planetMaterial.map = planetTexture;var mesh = THREE.SceneUtils.createMultiMaterialObject(geom, [planetMaterial]);return mesh;}function render() {stats.update();var delta = clock.getDelta();orbitControls.update(delta);sphere.rotation.y += 0.002;requestAnimationFrame(render);composer.render(delta);}function initStats() {var stats = new Stats();stats.setMode(0);stats.domElement.style.position = 'absolute';stats.domElement.style.left = '0px';stats.domElement.style.top = '0px';document.getElementById("Stats-output").appendChild(stats.domElement);return stats;}}window.onload = init;
</script>
</body>
</html>

效果如下在这里插入图片描述

相关文章:

学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、FilmPass渲染通道)

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.EffectComposer 后期…...

用Django和AJAX创建一个待办事项应用

用Django和AJAX创建一个待办事项应用 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 用Django和AJAX创建一个待办事项应用让我们创建一个简单的 Django 项目,其中包含不同类型的 A…...

​【微调大模型】使用LLaMA-Factory进行监督微调 Qwen2.5 ​

本文使用LLaMA-Factory进行监督微调 Qwen2.5。 此监督微调&#xff08;SFT&#xff09;脚本具有以下特点&#xff1a; 支持单GPU和多GPU训练&#xff1b;支持全参数调优&#xff0c;LoRA&#xff0c;Q-LoRA&#xff0c;Dora。 下面详细介绍一下该脚本的使用方法。 目录 安装…...

前端 react+ant design ,后端 springboot +mysql+redis 全栈项目零基础小白从服务器初始化开始部署上线超详细保姆级教程

哈喽小伙伴们,好久不见,我是小李,今天,来电干货,希望对大家有帮助。 去年12月底的时候心血来潮,正好赶上腾讯云在做活动,就买了一台服务器,说是后面打算上线一两个项目,体验体验云服务器究竟是怎么玩的。后来由于实习和“冬招”,实在忙不过来了,就放在文件夹吃灰了…...

[Windows] OfficeAI 助手 v0.3.20(长期免费,2025-03-18 本地支持WPS_Word联动)

OfficeAI助手&#xff0c;作为Microsoft Office与WPS的得力智能插件&#xff0c;集文档自动生成、内容精准校对与润色、公式智能推荐等多功能于一体。它凭借强大的数据分析能力&#xff0c;深度融入Office/WPS办公生态&#xff0c;一键简化复杂流程&#xff0c;让办公效率倍增&…...

3DGS之光栅化

光栅化&#xff08;Rasterization&#xff09;是计算机图形学中将连续的几何图形&#xff08;如三角形、直线等&#xff09;转换为离散像素的过程&#xff0c;最终在屏幕上形成图像。 一、光栅化的核心比喻 像画家在画布上作画 假设你是一个画家&#xff0c;要把一个3D立方体画…...

可发1区的超级创新思路(python 、MATLAB实现):基于SAM+Informer+2DCNN的功率预测模型

首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 目录 首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 一、模型背景与核心创新 二、模型组件详解 1. SAM时空注意力模块 原理说明 代码实…...

【Java面试系列】Spring Boot微服务架构下的分布式事务解决方案与性能优化详解 - 3-5年Java开发必备知识

【Java面试系列】Spring Boot微服务架构下的分布式事务解决方案与性能优化详解 - 3-5年Java开发必备知识 1. 引言 在当今的微服务架构中&#xff0c;分布式事务是一个不可避免的话题。随着业务复杂度的提升&#xff0c;如何保证跨服务的数据一致性成为开发者和架构师必须面对…...

【MATLAB第114期】基于MATLAB的SHAP可解释神经网络分类模型(敏感性分析方法)

【MATLAB第114期】基于MATLAB的SHAP可解释神经网络分类模型&#xff08;敏感性分析方法&#xff09; 引言 该文章实现了一个可解释的神经网络分类模型&#xff0c;使用BP神经网络&#xff08;BPNN&#xff09;来预测特征输出。该模型利用12个变量参数作为输入特征进行训练。为…...

WPS免费使用宏(安装VBA插件)

WPS提示要开会员才能使用宏&#xff0c;多次搜索发现其实可以直接安装VBA插件就行&#xff0c;Mark一下 插件下载地址&#xff1a; https://www.onlinedown.net/soft/10044362.htm ‘’’ WPS插件软件介绍 wps vba是一款wps office插件&#xff0c;安装wps vba 7.1就可以让of…...

让测试飞起来——DevOps中的自动化测试实践指南

让测试飞起来——DevOps中的自动化测试实践指南 近年来,DevOps理念已经成为现代软件开发和运维的“最佳拍档”。它倡导“开发”和“运维”的协作,核心目标是加速交付,同时保障软件质量。而在这一过程中,测试自动化扮演了不可替代的角色。今天,我们就一起来聊聊测试自动化…...

开源AI大模型AI智能名片S2B2C商城小程序:科技浪潮下的商业新引擎

摘要&#xff1a; 本文聚焦于科技迅猛发展背景下&#xff0c;开源AI大模型、AI智能名片与S2B2C商城小程序的融合应用。通过分析元宇宙、人工智能、区块链、5G等前沿科技带来的商业变革&#xff0c;阐述开源AI大模型AI智能名片S2B2C商城小程序在整合资源、优化服务、提升用户体验…...

webpack配置导致浏览器自动刷新

文章目录 关键配置 - liveReload 关键配置 - liveReload const dev_config {devtool: source-map,// watch: true,devServer: {contentBase: path.resolve(__dirname, bin),port: 8005,host:192.168.xx.xx,inline: true,hot: false,liveReload: false //关键这一行【false不会…...

OPEX baota 2024.02.26

OPEX baota 2024.02.26 运维集成软件宝塔2024.02.26作废例子&#xff1a; 最重要的两个地方&#xff1a;上传文件 网站&#xff0c;重启应用服务器&#xff08;tomcat&#xff09; 其他很少用的...

【Pandas】pandas DataFrame to_numpy

Pandas2.2 DataFrame Conversion 方法描述DataFrame.astype(dtype[, copy, errors])用于将 DataFrame 中的数据转换为指定的数据类型DataFrame.convert_dtypes([infer_objects, …])用于将 DataFrame 中的数据类型转换为更合适的类型DataFrame.infer_objects([copy])用于尝试…...

Tensorflow2实现: LSTM-火灾温度预测

- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/rnFa-IeY93EpjVu0yzzjkw) 中的学习记录博客** - **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 一&#xff1a;理论知识基础 1.LSTM原理 一句话介…...

【降尺度】AI+CMIP6数据分析与可视化、降尺度技术与气候变化的区域影响、极端气候分析

气候变化已成为全球性挑战&#xff0c;对农业、生态系统、水资源、人类健康和社会经济系统产生深远影响。科学研究表明&#xff0c;自工业革命以来&#xff0c;人类活动导致的温室气体排放与全球气温上升、极端天气事件增加、冰川融化和海平面上升等现象密切相关。为科学理解和…...

粒子系统优化完成

按计划对幻世&#xff08;OurDream&#xff09;2D图形引擎的粒子系统进行了加强和优化&#xff0c;重点强化了粒子运动的控制和颜色混合效果的功能&#xff0c;目前优化过后的粒子系统的整体效果是令人满意的。...

spark-core编程

RDD转换算子 RDD 的两种算子&#xff1a;转换算子和行动算子。 RDD 根据数据处理方式的不同将算子整体上分为 Value 类型、双 Value 类型和 Key-Value 类型。 算子实际上是一些函数&#xff0c;用于数据处理。 Value类型 map 将处理的数据逐条进行映射转换&#xff0c;…...

智慧班牌系统解决方案,SaaS智慧电子班牌云平台

智慧班牌系统解决方案 系统概述 智慧班牌是智慧校园建设不断发展的产物&#xff0c;是教育信息化改革的载体。通过智慧班牌可以高效便捷传递各种知识信息和通知信息、及时反馈课堂信息、实现班级的透明化管理。智慧班牌将学生平安考勤、异常出勤情况及时反馈至家长、老师&…...

Flutter 2025 Roadmap

2025 这个路线图是有抱负的。它主要代表了我们这些在谷歌工作的人收集的内容。到目前为止&#xff0c;非Google贡献者的数量超过了谷歌雇佣的贡献者&#xff0c;所以这并不是一个详尽的列表&#xff0c;列出了我们希望今年Flutter能够出现的所有令人兴奋的新事物&#xff01;在…...

【开发工具】科研开发中的主流AI工具整理及如何使用GPT润色英文论文

一、主流AI工具 AI技术发展至今已经逐渐成熟&#xff0c;并可以取代一部分科研和开发中的简单工作&#xff0c;并为复杂工作提高辅助&#xff0c;除此之外也是更高级的信息检索工具。熟练掌握 AI 工具在当前市场理应具有竞争优势&#xff0c;目前笔者在科研和开发中接触过AI工…...

用excel做九乘九乘法表

公式&#xff1a; IF($A2>B 1 , 1, 1,A2 & “" & B$1 & “” & $A2B$1,”")...

nacos配置达梦数据库驱动源代码步骤

1.在父工程pom.xml添加依赖&#xff1a; <dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.1.193</version> </dependency> 2.在nacos-config模块pom.xml添加依赖&#xff1…...

Spring Boot 线程池配置详解

Spring Boot 线程池配置详解 一、核心配置参数及作用 基础参数核心线程数 (corePoolSize)‌ 作用‌:线程池中始终保持存活的线程数量,即使空闲也不回收‌。 建议‌:根据任务类型设定(如 I/O 密集型任务可设为 CPU 核心数 2)‌。 最大线程数 (maxPoolSize)‌ 作用‌:…...

如何使用 qrcode.react生成二维码

qrcode.react&#xff08;查看官网&#xff09; 是一个用于 React 应用的 QR 码生成组件。下面是如何使用它的详细指南&#xff1a; 1、安装 npm install qrcode.react # 或者 yarn add qrcode.react2、基本用法 import {QRCodeSVG} from qrcode.react;const myPage () >…...

用VScode来编写前后端——构建基础框架

前言 我写这一个板块的原因是我参加了我们学校的新生项目课&#xff0c;需要创立一个系统&#xff0c;我们小组选的标题的基于计算机视觉的商品识别系统&#xff0c;那么我们需要一个网站来展示我们的功能&#xff0c;故写这些来记录一下自己&#xff0c;大家如果有什么问题的话…...

23.OpenCV轮廓逼近与拟合

OpenCV轮廓逼近与拟合 在计算机视觉中&#xff0c;轮廓是图像中边界或形状的重要表达形式。然而&#xff0c;直接从图像中提取的轮廓常常包含大量冗余点&#xff0c;且噪声较多。为了更好地描述图像中的形状&#xff0c;我们通常需要对轮廓进行逼近和拟合&#xff0c;从而降低…...

Flutter Row / Column 组件详解

1. 引言 在 Flutter 中&#xff0c;Row 和 Column 是最常用的布局组件&#xff0c;用于在水平方向 (Row) 或垂直方向 (Column) 排列子组件。它们提供了强大的对齐方式、空间分配策略&#xff0c;适用于各种 UI 设计需求。本文将详细介绍它们的基本用法、主要属性及自定义样式。…...

WHAT - 表单场景 - 依赖联动

目录 示例场景技术栈示例代码功能点总结详情场景 - 依赖联动初始化示例说明&#xff1a;详情页场景&#xff08;含回显、联动&#xff09;修改点说明示例代码&#xff08;详情页&#xff09;总结一下关键点 下面是一个基于 React TypeScript Ant Design (antd) 的表单联动示例…...

SecProxy - 自动化安全协同平台

本人为甲方安全人员&#xff0c;从事甲方工作近6年&#xff1b;针对在甲方平时安全工作的一些重复、复杂、难点的工作&#xff0c;思考如何通过AI、脚本、或者工具实现智能且自动化&#xff0c;于是花平时空闲时间准备将这些能力全部集中到一个平台&#xff0c;于是有了这个东西…...

网络3 子网掩码 划分ip地址

1.根据子网掩码判断主机数 IP地址网络位主机位 核心&#xff1a;将主机位划分为子网位和主机位 疑问&#xff1a;子网位有什么作用 子网掩码&#xff1a;网络位全为1&#xff0c;主机位全为0 主机数2^主机位 -2 2.根据主机和子网判断子网掩码 有一个B类网络145.38.0.0需要划…...

电容详解:定义、作用、分类与使用要点

一、电容的基本定义 电容&#xff08;Capacitor&#xff09; 是由两个导体极板&#xff08;正负极&#xff09;和中间绝缘介质组成的储能元件&#xff0c;其基本特性为存储电荷。 公式&#xff1a; C Q / V C&#xff1a;电容值&#xff08;单位&#xff1a;法拉F&#xff09…...

Sublime Text for Mac v4.0 【注册汉化版】代码编辑器

Sublime Text for Mac v4.0 【注册汉化版】代码编辑器 一、介绍 sublime text for Mac一款轻量级的文本编辑器&#xff0c;拥有丰富的功能和插件。它支持多种编程语言&#xff0c;包括C、Java、Python、Ruby等&#xff0c;可以帮助程序员快速编写代码。Sublime Text的界面简洁…...

OpenCV 进阶实战与技巧——图像处理的全面解析

在上篇文章中&#xff0c;我们一起迈入了 Python OpenCV 的奇妙世界&#xff0c;学习了图像的读取、显示和保存等基本操作&#xff1a;用Python和OpenCV开启图像处理魔法之旅-CSDN博客。今天&#xff0c;我们将继续深入&#xff0c;探索图像的各种变换、滤波、边缘检测以及更深…...

单细胞转录组-生物标志物篇 | 从异质性描绘到筛查应用

宫颈癌&#xff08;Cervical cancer, CC&#xff09;是一种常见的妇科恶性肿瘤。尽管目前的筛查方法已被证明有效并显著降低了CC的发病率和死亡率&#xff0c;但仍然存在缺陷。单细胞RNA测序可以在单细胞分辨率下鉴定复杂和稀有的细胞群。通过scRNA-seq&#xff0c;已经绘制和描…...

MQTT:深入剖析 paho.mqtt.embedded - c - master 目录结构

引言 在嵌入式开发领域&#xff0c;消息队列遥测传输&#xff08;MQTT&#xff09;协议因其轻量级、低带宽消耗等特性被广泛应用。Eclipse Paho 项目提供了多种语言的 MQTT 客户端实现&#xff0c;其中paho.mqtt.embedded - c - master是针对 C 语言在嵌入式环境下的 MQTT 客户…...

minio命令行客户端mc常见用法

安装minio命令行客户端mc https://min-io.cn/docs/minio/linux/reference/minio-mc-admin.html # Windows安装minio命令行客户端 choco install minio-client -y# Linux安装mc客户端 wget -c -P /usr/local/bin/ https://dl.min.io/client/mc/release/linux-amd64/mc # 赋予可…...

Mac提示无法打开应用程序DBeaver

问题&#xff1a;安装好后&#xff0c;打开DBeaver时候提示“无法打开应用程序DBeaver” &#xff08;1&#xff09;首先&#xff0c;进入到/Applications/DBeaver.app/Contents/MacOS目录查看可执行程序的权限是否为-rwxr-xr-x&#xff0c;如果不是执行chmod x DBeaver的命令 …...

Dart逆向之函数调用

我们从Blutter恢复的部分IL中可以看到Dart调用函数的逻辑 // 0x180490: r16 <int> // 0x180490: ldr x16, [PP, #0x8a0] ; [pp0x8a0] TypeArguments: <int> // 0x180494: r30 Instance_MethodChannel // 0x180494: ldr lr, [P…...

Word / WPS 页面顶部标题 段前间距 失效 / 不起作用 / 不显示,标题紧贴页眉 问题及解决

问题描述&#xff1a; 在 Word 或者 WPS 里面&#xff0c;如果不是新的一节&#xff0c;而是位于新的一页首行时&#xff0c;不管怎么设置段前间距&#xff0c;始终是失效的&#xff0c;实际段前间距一直是零。 解决方案&#xff1a; 查询了很多方案均无法解决问题&#xff…...

在 ASP.NET Web 应用中解析 JSON 数据实例

在 ASP.NET Web 应用中解析 JSON 数据有多种方法&#xff0c;取决于你使用的是传统的 Web Forms、MVC 还是现代的 Web API。以下是几种常见的解析方法&#xff1a; 1. 使用 Newtonsoft.Json (Json.NET) 这是最常用的 JSON 处理库&#xff0c;需要先安装 NuGet 包&#xff1a;…...

vSphere 8.x Advanced Design(3V0-21.23)题库

最新版vSphere 8.x Advanced Design(3V0-21.23)题库&#xff0c;完整版见上方二维码。 Following a review of security requirements, an architect has confirmed the following requirements: REQ001- A clustered firewall solution must be placed at the perimeter of t…...

vba讲excel转换为word

VBA将excel转换为word Sub ExportToWordFormatted() 声明变量Dim ws As Worksheet 用于存储当前活动的工作表Dim rng As Range 用于存储工作表的使用范围&#xff08;即所有有数据的单元格&#xff09;Dim rowCount As Long, colCount As Long 用于存储数据范围的行数和列数…...

【BUG】远程连接阿里云服务器上的redis报错

出现 Redis Client On Error: Error: connect ECONNREFUSED 47.100.XXX.XX:6379 错误&#xff0c;表明 Redis 客户端无法连接到指定的 Redis 服务器&#xff0c;可按以下步骤排查解决&#xff1a; 1. 检查 Redis 服务器是否运行 操作&#xff1a;在 Redis 服务器所在终端执行…...

数据中台、BI业务访谈(二):组织架构梳理的坑

这是数据中台、BI业务访谈系列的第二篇文章&#xff0c;在上一篇文章中&#xff0c;我重点介绍了在给企业的业务部门、高层管理做业务访谈之前我们要做好行业、业务知识的功课。做好这些功课之后&#xff0c;就到了实际的访谈环节了。 业务访谈关键点 那么在具体业务访谈的时…...

集成学习+泰坦尼克号案例+红酒品质预测

集成学习简介 学习目标&#xff1a; 1.知道集成学习是什么&#xff1f; 2.了解集成学习的分类 3.理解bagging集成的思想 4.理解boosting集成的思想 【知道】集成学习是什么&#xff1f; 集成学习是机器学习中的一种思想&#xff0c;它通过多个模型的组合形成一个精度更高…...

SpringBoot 基础知识,HTTP 概述

1. 概述 1.1 Spring Spring 提供若干个子项目&#xff0c;每个项目用于完成特定功能 Spring 的若干个子项目都基于一个基础的框架&#xff1a;Spring Framework 框架类似于 房屋的地基 但 Spring Framework 配置繁琐&#xff0c;入门难度大 1.2 Spring Boot 于是&#xf…...

背包问题(java)实现

1、01背包 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scannew Scanner(System.in);int nscan.nextInt();int mscan.nextInt();int[][] dpnew int[n1][m1];int[] vnew int[n1];int[] wnew int[n1];for(int i1;i<n;i) {v…...

HDCP(一)

HDCP的核心目标解析 1. 数字内容版权保护 HDCP&#xff08;高带宽数字内容保护&#xff09;的核心目标是防止未经授权的设备对高清音视频内容进行非法复制或截取。它通过加密技术保护数字信号在传输链路&#xff08;如HDMI、DisplayPort、DVI等接口&#xff09;中的安全性&am…...