VTK 三维场景的基本要素(相机) vtkCamera 相机的运动
相机的运动

当物体在处于静止位置时,相机可以在物体周围移动,摄取不同角度的图像
移动
移动分为相机的移动,和相机焦点的移动;移动改变了相机相对焦点的位置,离焦点更近或者更远;这样就会改变被渲染的物体在视野中的部分;
相机的移动可以有水平上的移动,垂直方向的移动,前后的移动;
vtkCamera::Dolly(double value);将相机与焦点的距离除以给定的推拉值。使用大于1的值向焦点推拉,
使用小于1的值远离焦点推拉。(缩放)
旋转
相机的旋转:是相机在以焦点为中心的圆球面上移动,因为相机可以水平旋转和垂直旋转;水平旋转就是在相机围绕球心过朝上方向这个轴旋转,也可以说是在球面上的维度进行旋转,但相机的镜头始终指向焦点;水平旋转就是在相机绕球面上的经线向上或者向下旋转;
围绕投影方向旋转相机。这将使摄影机绕其轴旋转:
vtkCamera::Roll(double angle);
围绕以焦点为中心的视图向上矢量旋转相机
请注意,视图向上矢量是通过SetViewUp设置的,不一定垂直于投影方向。结果是相机的水平旋转(纬度)
vtkCamera::Azimuth(double angle);
使用焦点作为旋转中心,围绕投影方向的负值与视图向上向量的叉积旋转相机。结果是场景的垂直旋转(经度)
vtkCamera::Elevation(double angle);
使用相机的位置作为旋转中心,围绕视图向上矢量旋转焦点
请注意,视图向上矢量是通过SetViewUp设置的,不一定垂直于投影方向。结果是场景的水平旋转(纬度)。
vtkCamera::Yaw(double angle);
使用相机的位置作为旋转中心,围绕视图向上矢量和投影方向的叉积旋转焦点。
结果是摄影机垂直旋转(经度)。
vtkCamera::Pitch(double angle);
缩放:
vtkCamera::Zoom(double factor);在透视模式下,将视角减小指定的因子。在平行模式下,将平行比例减小指定的因子。
值大于1表示放大,
值小于1表示缩小@注意:当UseExplicitProjectionTransformMatrix为true时,
将忽略此设置。
重置相机参数 :
void ResetCamera();
视频:
相机的旋转:
vtkCameraTest
视频代码:
注意这个只有初始时,旋转是对的;一但旋转后,再旋转可能是错的;
#pragma once
//#include "vtk_include.h"
#include <vtkAppendFilter.h>
#include <vtkCamera.h>
#include <vtkCellArray.h>
#include <vtkConeSource.h>
#include <vtkContourFilter.h>
#include <vtkCubeSource.h>
#include <vtkDataSetMapper.h>
#include <vtkImplicitModeller.h>
#include <vtkLODActor.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkRotationalExtrusionFilter.h>
#include <vtkSphereSource.h>
#include <vtkTextActor.h>
#include <vtkTextProperty.h>
#include <vtkTransform.h>
#include <vtkTransformFilter.h>
#include <vtkTransformPolyDataFilter.h>
#include <vtkWarpTo.h>
#include <algorithm>
#include <vtkInteractorStyleTrackballCamera.h>
#include <array>#include<stdio.h>
#include<iostream>
using namespace std;class Normal3DCameraStyle : public vtkInteractorStyleTrackballCamera
{
public:static Normal3DCameraStyle* New();vtkTypeMacro(Normal3DCameraStyle, vtkInteractorStyleTrackballCamera);//virtual void OnLeftButtonDown(void);//virtual void OnLeftButtonUp(void);//virtual void OnRightButtonDown(void);//virtual void OnRightButtonUp(void);//virtual void OnMiddleButtonDown(void);//virtual void OnMiddleButtonUp(void);//virtual void OnMouseWheelForward(void);//virtual void OnMouseWheelBackward(void);//virtual void OnMouseMove(void);// /**//* OnChar is triggered when an ASCII key is pressed. Some basic key presses//* are handled here ('q' for Quit, 'p' for Pick, etc)//*///virtual void OnChar();OnKeyDown is triggered by pressing any key (identical to OnKeyPress()).An empty implementation is provided. The behavior of this function shouldbe specified in the subclass.//virtual void OnKeyDown();OnKeyUp is triggered by releaseing any key (identical to OnKeyRelease()).An empty implementation is provided. The behavior of this function shouldbe specified in the subclass.//virtual void OnKeyUp();OnKeyPress is triggered by pressing any key (identical to OnKeyDown()).An empty implementation is provided. The behavior of this function shouldbe specified in the subclass.//virtual void OnKeyPress();OnKeyRelease is triggered by pressing any key (identical to OnKeyUp()).An empty implementation is provided. The behavior of this function shouldbe specified in the subclass.//virtual void OnKeyRelease();void OnKeyPress(){switch (this->Interactor->GetKeyCode()){case 'a':case 'A':cout << "A " << endl;m_Camera->Azimuth(1);break;case 'b':case 'B':m_Camera->Roll(1);cout << "b " << endl;break;case 'v':case 'V':m_Camera->Elevation(1);cout << "v " << endl;break;}m_RenderWindows->Render();}public:vtkCamera * m_Camera;vtkRenderWindow* m_RenderWindows;
};vtkStandardNewMacro(Normal3DCameraStyle);//必须加!!!!void main(){vtkNew<vtkNamedColors> colors;// Set the colors.std::array<unsigned char, 4> azArrowColor{ {255, 77, 77} };colors->SetColor("AzimuthArrowColor", azArrowColor.data());std::array<unsigned char, 4> elevArrowColor{ {77, 255, 77} };colors->SetColor("ElevationArrowColor", elevArrowColor.data());std::array<unsigned char, 4> rollArrowColor{ {255, 255, 77} };colors->SetColor("RollArrowColor", rollArrowColor.data());std::array<unsigned char, 4> spikeColor{ {255, 77, 255} };colors->SetColor("SpikeColor", spikeColor.data());// Set the background color.std::array<unsigned char, 4> bkg{ {26, 51, 102} };colors->SetColor("BkgColor", bkg.data());// Create the RenderWindow, Renderer and both ActorsvtkNew<vtkRenderer> ren1;vtkNew<vtkRenderWindow> renWin;renWin->AddRenderer(ren1);vtkNew<vtkRenderWindowInteractor> iren;iren->SetRenderWindow(renWin);// create a camera modelvtkNew<vtkConeSource> camCS;camCS->SetHeight(1.5);camCS->SetResolution(12);camCS->SetRadius(0.4);vtkNew<vtkCubeSource> camCBS;camCBS->SetXLength(1.5);camCBS->SetZLength(0.8);camCBS->SetCenter(0.4, 0, 0);vtkNew<vtkAppendFilter> camAPD;camAPD->AddInputConnection(camCS->GetOutputPort());camAPD->AddInputConnection(camCBS->GetOutputPort());vtkNew<vtkDataSetMapper> camMapper;camMapper->SetInputConnection(camAPD->GetOutputPort());vtkNew<vtkLODActor> camActor;camActor->SetMapper(camMapper);camActor->SetScale(2, 2, 2);// draw the arrowsvtkNew<vtkPolyData> pd;vtkNew<vtkCellArray> ca;vtkNew<vtkPoints> fp;fp->InsertNextPoint(0, 1, 0);fp->InsertNextPoint(8, 1, 0);fp->InsertNextPoint(8, 2, 0);fp->InsertNextPoint(10, 0.01, 0);fp->InsertNextPoint(8, -2, 0);fp->InsertNextPoint(8, -1, 0);fp->InsertNextPoint(0, -1, 0);ca->InsertNextCell(7);ca->InsertCellPoint(0);ca->InsertCellPoint(1);ca->InsertCellPoint(2);ca->InsertCellPoint(3);ca->InsertCellPoint(4);ca->InsertCellPoint(5);ca->InsertCellPoint(6);pd->SetPoints(fp);pd->SetPolys(ca);vtkNew<vtkPolyData> pd2;vtkNew<vtkCellArray> ca2;vtkNew<vtkPoints> fp2;fp2->InsertNextPoint(0, 1, 0);fp2->InsertNextPoint(8, 1, 0);fp2->InsertNextPoint(8, 2, 0);fp2->InsertNextPoint(10, 0.01, 0);ca2->InsertNextCell(4);ca2->InsertCellPoint(0);ca2->InsertCellPoint(1);ca2->InsertCellPoint(2);ca2->InsertCellPoint(3);pd2->SetPoints(fp2);pd2->SetLines(ca2);vtkNew<vtkImplicitModeller> arrowIM;arrowIM->SetInputData(pd);arrowIM->SetSampleDimensions(50, 20, 8);vtkNew<vtkContourFilter> arrowCF;arrowCF->SetInputConnection(arrowIM->GetOutputPort());arrowCF->SetValue(0, 0.2);vtkNew<vtkWarpTo> arrowWT;arrowWT->SetInputConnection(arrowCF->GetOutputPort());arrowWT->SetPosition(5, 0, 5);arrowWT->SetScaleFactor(0.85);arrowWT->AbsoluteOn();vtkNew<vtkTransform> arrowT;arrowT->RotateY(60);arrowT->Translate(-1.33198, 0, -1.479);arrowT->Scale(1, 0.5, 1);vtkNew<vtkTransformFilter> arrowTF;arrowTF->SetInputConnection(arrowWT->GetOutputPort());arrowTF->SetTransform(arrowT);vtkNew<vtkDataSetMapper> arrowMapper;arrowMapper->SetInputConnection(arrowTF->GetOutputPort());arrowMapper->ScalarVisibilityOff();// draw the azimuth arrowsvtkNew<vtkLODActor> a1Actor;a1Actor->SetMapper(arrowMapper);a1Actor->RotateZ(180);a1Actor->SetPosition(1, 0, -1);a1Actor->GetProperty()->SetColor(colors->GetColor3d("AzimuthArrowColor").GetData());a1Actor->GetProperty()->SetSpecularColor(colors->GetColor3d("White").GetData());a1Actor->GetProperty()->SetSpecular(0.3);a1Actor->GetProperty()->SetSpecularPower(20);a1Actor->GetProperty()->SetAmbient(0.2);a1Actor->GetProperty()->SetDiffuse(0.8);vtkNew<vtkLODActor> a2Actor;a2Actor->SetMapper(arrowMapper);a2Actor->RotateZ(180);a2Actor->RotateX(180);a2Actor->SetPosition(1, 0, 1);a2Actor->GetProperty()->SetColor(colors->GetColor3d("AzimuthArrowColor").GetData());a2Actor->GetProperty()->SetSpecularColor(colors->GetColor3d("White").GetData());a2Actor->GetProperty()->SetSpecular(0.3);a2Actor->GetProperty()->SetSpecularPower(20);a2Actor->GetProperty()->SetAmbient(0.2);a2Actor->GetProperty()->SetDiffuse(0.8);// draw the elevation arrowsvtkNew<vtkLODActor> a3Actor;a3Actor->SetMapper(arrowMapper);a3Actor->RotateZ(180);a3Actor->RotateX(90);a3Actor->SetPosition(1, -1, 0);a3Actor->GetProperty()->SetColor(colors->GetColor3d("ElevationArrowColor").GetData());a3Actor->GetProperty()->SetSpecularColor(colors->GetColor3d("White").GetData());a3Actor->GetProperty()->SetSpecular(0.3);a3Actor->GetProperty()->SetSpecularPower(20);a3Actor->GetProperty()->SetAmbient(0.2);a3Actor->GetProperty()->SetDiffuse(0.8);vtkNew<vtkLODActor> a4Actor;a4Actor->SetMapper(arrowMapper);a4Actor->RotateZ(180);a4Actor->RotateX(-90);a4Actor->SetPosition(1, 1, 0);a4Actor->GetProperty()->SetColor(colors->GetColor3d("ElevationArrowColor").GetData());a4Actor->GetProperty()->SetSpecularColor(colors->GetColor3d("White").GetData());a4Actor->GetProperty()->SetSpecular(0.3);a4Actor->GetProperty()->SetSpecularPower(20);a4Actor->GetProperty()->SetAmbient(0.2);a4Actor->GetProperty()->SetDiffuse(0.8);// draw the DOPvtkNew<vtkTransform> arrowT2;arrowT2->Scale(1, 0.6, 1);arrowT2->RotateY(90);vtkNew<vtkTransformPolyDataFilter> arrowTF2;arrowTF2->SetInputData(pd2);arrowTF2->SetTransform(arrowT2);vtkNew<vtkRotationalExtrusionFilter> arrowREF;arrowREF->SetInputConnection(arrowTF2->GetOutputPort());arrowREF->CappingOff();arrowREF->SetResolution(30);vtkNew<vtkPolyDataMapper> spikeMapper;spikeMapper->SetInputConnection(arrowREF->GetOutputPort());vtkNew<vtkLODActor> a5Actor;a5Actor->SetMapper(spikeMapper);a5Actor->SetScale(.3, .3, .6);a5Actor->RotateY(90);a5Actor->SetPosition(-2, 0, 0);a5Actor->GetProperty()->SetColor(colors->GetColor3d("SpikeColor").GetData());a5Actor->GetProperty()->SetAmbient(0.2);a5Actor->GetProperty()->SetDiffuse(0.8);// focal pointvtkNew<vtkSphereSource> fps;fps->SetRadius(0.5);vtkNew<vtkPolyDataMapper> fpMapper;fpMapper->SetInputConnection(fps->GetOutputPort());vtkNew<vtkLODActor> fpActor;fpActor->SetMapper(fpMapper);fpActor->SetPosition(-9, 0, 0);fpActor->GetProperty()->SetSpecularColor(colors->GetColor3d("White").GetData());fpActor->GetProperty()->SetSpecular(0.3);fpActor->GetProperty()->SetAmbient(0.2);fpActor->GetProperty()->SetDiffuse(0.8);fpActor->GetProperty()->SetSpecularPower(20);// create the roll arrowsvtkNew<vtkWarpTo> arrowWT2;arrowWT2->SetInputConnection(arrowCF->GetOutputPort());arrowWT2->SetPosition(5, 0, 2.5);arrowWT2->SetScaleFactor(0.95);arrowWT2->AbsoluteOn();vtkNew<vtkTransform> arrowT3;arrowT3->Translate(-2.50358, 0, -1.70408);arrowT3->Scale(0.5, 0.3, 1);vtkNew<vtkTransformFilter> arrowTF3;arrowTF3->SetInputConnection(arrowWT2->GetOutputPort());arrowTF3->SetTransform(arrowT3);vtkNew<vtkDataSetMapper> arrowMapper2;arrowMapper2->SetInputConnection(arrowTF3->GetOutputPort());arrowMapper2->ScalarVisibilityOff();// draw the roll arrowsvtkNew<vtkLODActor> a6Actor;a6Actor->SetMapper(arrowMapper2);a6Actor->RotateZ(90);a6Actor->SetPosition(-4, 0, 0);a6Actor->SetScale(1.5, 1.5, 1.5);a6Actor->GetProperty()->SetColor(colors->GetColor3d("RollArrowColor").GetData());a6Actor->GetProperty()->SetSpecularColor(colors->GetColor3d("White").GetData());a6Actor->GetProperty()->SetSpecular(0.3);a6Actor->GetProperty()->SetSpecularPower(20);a6Actor->GetProperty()->SetAmbient(0.2);a6Actor->GetProperty()->SetDiffuse(0.8);// Add the actors to the renderer, set the background and sizeren1->AddActor(camActor);ren1->AddActor(a1Actor);ren1->AddActor(a2Actor);ren1->AddActor(a3Actor);ren1->AddActor(a4Actor);ren1->AddActor(a5Actor);ren1->AddActor(a6Actor);ren1->AddActor(fpActor);ren1->SetBackground(colors->GetColor3d("BkgColor").GetData());ren1->SetBackground(colors->GetColor3d("SlateGray").GetData());renWin->SetSize(640, 480);renWin->SetWindowName("CameraModel1");// render the imagevtkCamera* cam1 = (ren1->GetActiveCamera());ren1->ResetCamera();cam1->Azimuth(150);cam1->Elevation(30);cam1->Dolly(1.5);ren1->ResetCameraClippingRange();// Create a TextActor for azimuth (a1 and a2 actor's color)vtkNew<vtkTextActor> text;text->SetInput("Azimuth");vtkTextProperty* tprop = text->GetTextProperty();tprop->SetFontFamilyToArial();tprop->ShadowOff();tprop->SetLineSpacing(1.0);tprop->SetFontSize(36);tprop->SetColor(a1Actor->GetProperty()->GetColor());text->SetDisplayPosition(20, 50);ren1->AddActor2D(text);// Create a TextActor for elevation (a3 and a4 actor's color)vtkNew<vtkTextActor> text2;text2->SetInput("Elevation");tprop = text2->GetTextProperty();tprop->SetFontFamilyToArial();tprop->ShadowOff();tprop->SetLineSpacing(1.0);tprop->SetFontSize(36);tprop->SetColor(a3Actor->GetProperty()->GetColor());text2->SetDisplayPosition(20, 100);ren1->AddActor2D(text2);// Create a TextActor for roll (a6 actor's color)vtkNew<vtkTextActor> text3;text3->SetInput("Roll");tprop = text3->GetTextProperty();tprop->SetFontFamilyToArial();tprop->ShadowOff();tprop->SetLineSpacing(1.0);tprop->SetFontSize(36);tprop->SetColor(a6Actor->GetProperty()->GetColor());text3->SetDisplayPosition(20, 150);ren1->AddActor2D(text3);vtkNew<Normal3DCameraStyle> style;cam1->SetFocalPoint(fpActor->GetPosition());cam1->SetPosition(camActor->GetPosition());style->m_Camera = cam1;style->m_RenderWindows = renWin;iren->SetInteractorStyle(style);renWin->Render();iren->Initialize();iren->Start();}
相关文章:
VTK 三维场景的基本要素(相机) vtkCamera 相机的运动
相机的运动 当物体在处于静止位置时,相机可以在物体周围移动,摄取不同角度的图像 移动 移动分为相机的移动,和相机焦点的移动;移动改变了相机相对焦点的位置,离焦点更近或者更远;这样就会改变被渲染的物体…...
C++ //练习 6.53 说明下列每组声明中的第二条语句会产生什么影响,并指出哪些不合法(如果有的话)。
C Primer(第5版) 练习 6.53 练习 6.53 说明下列每组声明中的第二条语句会产生什么影响,并指出哪些不合法(如果有的话)。 (a) int calc(int &, int &);int calc(const int &, const int &); (b) int …...
缓慢变化维 常用的处理方法
什么是缓慢变化维 维度 在数仓中,表往往会被划分成两种类型,一种是 事实表,另一种是维度表,举个例子,比如说: ❝ 2024年2月14日,健鑫在12306上买了两张火车票,每张火车票400元&…...
free pascal:fpwebview 组件通过JSBridge调用本机TTS
从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\js_bidir 学习 js_bidir.lpr ,编写 js_bind_speak.lpr 如下,通过JSBridge调用本机…...
C语言静态库深入剖析
在C语言编程实践中,库是代码复用和模块化开发的重要基础结构。静态库作为其中一种主要的库类型,其内容在编译链接阶段即被完整地嵌入到最终生成的可执行文件中,从而使得程序在运行时无需外部依赖。本篇博客将系统性、详细地剖析C语言静态库的…...
A股上市以来涨幅排行榜
一、统计数据说明 1. 涨幅排行榜是根据股价的后复权价格计算的,该价格考虑了分红送股拆股等事件对股价的影响,相当于是分红再投资的股价。 2. 年化投资收益率,是根据IPO收盘价至今涨幅计算的复合年化收益率。例如,假设一个股票上…...
鸿蒙开发系列教程(十八)--页面内动画(1)
页面内的动画 显示动画 语法:animateTo(value: AnimateParam, event: () > void): void 第一个参数指定动画参数 第二个参数为动画的闭包函数。 如:animateTo({ duration: 1000, curve: Curve.EaseInOut }, () > {动画代码}) dura…...
Web基础01-HTML+CSS
目录 一、HTML 1.概述 2.html结构解析 3.HTML标签分类 4.HTML标签关系 5.HTML空元素 6.HTML属性 7.常用标签 (1)HTML标签 (2)标题标签 (3)换/折行标签 (4)段落标签 &am…...
Linux命令行全景指南:从入门到实践,掌握命令行的力量
目录 知识梳理思维导图: linux命令入门 为什么要学Linux命令 什么是终端 什么是命令 关于Linux命令的语法 tab键补全 关于命令提示符 特殊目录 常见重要目录 /opt /home /root /etc /var/log/ man命令 shutdown命令 history命令 which命令 bash…...
蓝桥杯嵌入式第11届真题(完成) STM32G431
蓝桥杯嵌入式第11届真题(完成) STM32G431 题目 代码 程序和之前的大同小异,不过多解释 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief :…...
ChatGPT高效提问—prompt实践(教师助手)
ChatGPT高效提问—prompt实践(教师助手) 下面来看看ChatGPT在教育领域有什么用途。 首先设定ChatGPT的角色为高中教师助手。 输入prompt: ChatGPT输出: 教师助手的角色已经设置完成。下面通过几种不同的情景演示如何使用。 1.1.1 制定…...
AI绘画作品的展示和变现-2
4.7 制作红包封面 中国的节日和传统文化元素仍然可以成为创作者们的创作灵感,创造出更多的变现机会。比如元宵节,可以制作大型元宵图案,进行引流并卖出元宵。 而春分、谷雨等节气也可以成为创作的灵感来源,创作出与之相关的图案&…...
Linux---网络套接字
端口号 端口号 端口号是一个2字节16位的整数; 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; IP地址 端口号能够标识网络上的某一台主机的某一个进程; 一个端口号只能被一个进程占用 在公网上,IP地址能表示唯一的一台主机&…...
前端vue 数字 字符串 丢失精度问题
1.问题 后端返回的数据 是这样的 一个字符串类型的数据 前端要想显示这个 肯定需要使用Json.parse() 转换一下 但是 目前有一个问题 转换的确可以 showId:1206381711026823172 有一个这样的字段 转换了以后 发现 字段成了1206381711026823200 精度直接丢了 原本的数据…...
智能汽车行业产业研究报告:4D成像毫米波雷达—自动驾驶最佳辅助
今天分享的是智能汽车系列深度研究报告:《智能汽车行业产业研究报告:4D成像毫米波雷达—自动驾驶最佳辅助》。 (报告出品方:开源证券) 报告共计:43页 视觉感知最佳辅助——4D 成像毫米波雷达 感知是自动…...
docker 3.1 镜像
docker 3.1 镜像命令 拉取镜像 docker pull debian #从 Docker Hub 拉取名为 debian 的镜像docker pull hello-world #从 Docker Hub 拉入名为 hello-world 的镜像 运行镜像/容器 docker run hello-world 查看本地所有的镜像 docker images 容器生成镜像…...
如何在极低成本硬件上落地人工智能算法 —— 分布式AI
一、背景 分布式AI的发展前景非常广阔,随着5G、6G等高速网络通信技术的普及和边缘计算能力的提升,以及AI算法和硬件的不断优化进步,分布式AI将在多个领域展现出强大的应用潜力和市场价值: 1. **物联网(IoT࿰…...
机器学习:ROC曲线笔记
ROC曲线(Receiver Operating Characteristic Curve)是一种用于评估二分类模型性能的图形化工具,主要用于展示在不同阈值(Threshold)下模型的真阳性率(True Positive Rate,TPR)和假阳…...
【lesson54】线程互斥
文章目录 线程互斥 线程互斥 互斥量mutex 大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,变量归属单个线程,其他线程无法获得这种变量。但有时候,很多变量都需要在线程间…...
Android14音频进阶:MediaPlayerService如何启动AudioTrack 上篇(五十五)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
