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

基于域自适应的双光融合

目录

    • 引言
    • DAF-Net
      • 编码器-解码器分支
        • 编码器部分
        • 融合层
        • 解码器部分
      • 域自适应层
        • 概述
        • 多核最大均值差异(MK-MMD)
        • 第一阶段:编码器-解码器分支训练
          • 训练过程
          • 损失函数
        • 第二阶段:融合层训练
          • 训练过程
          • 损失函数
    • 实验与结果
    • 总结

文章声明,非广告,仅个人体验;

引言

红外和可见光图像融合的目标是将红外图像和可见光图像的互补信息结合起来,以实现更全面的环境感知。这意味着通过融合两种类型的图像,可以获得比单独使用任何一种图像更丰富的场景信息。

参考文献,全部资源均可在该地址获取:https://www.aspiringcode.com/content?id=17323478187973&uid=3bf8b73ec4ff407a90291a8502a8c1db

红外图像在夜间监控和目标检测等低光环境下表现优异。这是因为红外图像能够捕捉到热辐射,这种辐射不受可见光照明条件的限制,因此可以在完全黑暗或光线不足的环境中“看到”物体和场景。

可见光图像保留了丰富的细节和色彩,提供了清晰的现场表示。这是因为可见光图像捕捉的是人眼可以看到的光谱范围,因此它们能够提供与人类视觉感知相似的图像,包括颜色和纹理等细节。

将这两种模态的图像融合起来可以弥补各自的局限性。例如,红外图像虽然能在夜间“看见”,但缺乏色彩信息;而可见光图像虽然色彩丰富,但在低光环境下表现不佳。通过融合,可以结合红外图像的夜间监控能力和可见光图像的细节和色彩信息,从而提供更完整的环境理解。

尽管融合的优势明显,但由于成像原理、分辨率和光谱响应的差异,保持关键信息的一致性成为一个主要挑战。这意味着在融合过程中,需要找到一种方法来确保两种图像中的关键特征(如边缘、纹理和轮廓)能够被准确地结合在一起,而不是相互冲突或丢失。

现有的图像融合方法大致分为三类:

  • 传统方法:如像素级或特征级融合方法,这些方法通过简单的规则进行融合,计算效率高,易于实现,但无法充分利用红外和可见光图像的互补信息,导致融合效果有限。- 变换域方法:如小波变换和拉普拉斯金字塔技术,这些方法通过将图像分解为不同的频率成分来保留细节,但在重建过程中可能丢失关键的模态特定特征,难以同时保留全局结构和细节纹理。- 基于深度学习的方法:近年来,深度学习方法取得了显著进展,如卷积神经网络(CNN)和生成对抗网络(GAN)。这些方法能够通过学习模态间的非线性关系,生成视觉质量更高的融合图像。然而,深度学习方法通常需要大量标注数据,这在数据稀缺时成为限制因素。此外,在保持全局结构和细节纹理方面仍然存在挑战。
    为了更好地对齐红外和可见光图像的潜在特征空间,论文《DAF-Net: A Dual-Branch Feature Decomposition Fusion Network with Domain Adaptive for Infrared and Visible Image Fusion》提出了一种域自适应的双分支特征分解融合网络(DAF-Net)。该方法通过引入多核最大均值差异(MK-MMD)来减少红外和可见光图像之间的分布差异,从而提高融合图像的质量。

DAF-Net的基础编码器基于Restormer网络,负责捕捉全局结构信息;细节编码器基于可逆神经网络(INN),负责提取细节纹理信息。MK-MMD仅在基础编码器中应用,以确保全局特征的一致性,避免局部细节的过度对齐和模态特定信息的丢失。该结构使得DAF-Net能够在全局结构和细节保留之间取得平衡。

DAF-Net

DAF-Net由一个编码器-解码器分支和一个基于混合核函数的域自适应层组成。

编码器-解码器分支

编码器-解码器分支是DAF-Net网络架构的核心部分,负责提取和重建图像特征。以下是编码器-解码器分支的详细解释:

编码器部分

编码器部分由三个主要层次组成:共享特征层、基础编码器和细节编码器。

  1. 共享特征层: 这一层基于Transformer架构,用于处理输入的红外和可见光图像。它提取图像的浅层特征,这些特征是后续编码过程的基础。共享特征层的输出表示为 YSI=ES(I)YSI=E****S(I) 和 YSV=ES(V)YSV=E****S(V),其中 ES(⋅)E****S(⋅) 表示共享编码器,II 和 VV 分别代表红外和可见光图像。1. 基础编码器: 基础编码器使用Restormer块构建,目的是捕获图像的全局结构信息。它接收共享特征层的输出,并进一步提取更深层次的特征。基础编码器的输出表示为 YBI=EB(YSI)YBI=E****B(YSI) 和 YBV=EB(YSV)YBV=E****B(YSV),其中 EB(⋅)E****B(⋅) 表示基础编码器。1. 细节编码器:细节编码器基于INN(Invertible Neural Networks)块构建,专注于提取图像的细节纹理信息。它同样接收共享特征层的输出,并提取细节特征。细节编码器的输出表示为 YDI=ED(YSI)YDI=E****D(YSI) 和 YDV=ED(YSV)YDV=E****D(YSV),其中 ED(⋅)E****D(⋅) 表示细节编码器。
融合层

融合层包括基础融合层和细节融合层,它们分别对基础编码器和细节编码器提取的特征进行融合。

  • 基础融合层 FBF*B细节融合层 FD**FD
  • 基础融合层接收基础编码器提取的特征 YBIYBI 和 YBVYBV**,并输出融合后的基础特征 YBIV**YB**I*V**。
  • 细节融合层接收细节编码器提取的特征 YDIYDI 和 YDVYDV**,并输出融合后的细节特征 YDIVYDIV*。
  • 融合层的输出表示为 YBIV=FB(YBI,YBV)YBI****V=F****B(YBI,Y*BV) 和 YDIV=FD(YDI,YDV)YDIV**=FD*(YDI,YDV)。
解码器部分

解码器部分负责将编码器提取的特征转换回图像空间,生成重建的红外图像、可见光图像或融合图像。

  1. 第一阶段重建: 解码器首先使用基础和细节特征 YBIYBI 和 YDIYDI 重建红外图像 I**I**。同样,使用 YBVY*BV 和 YDVYDV** 重建可见光图像 V**V**。重建过程表示为 I=D(YBI,YDI)**I**=D(YBI,YDI**) 和 V=D(YBV,YDV)**V**=D(YBV,YDV),其中 D(⋅)D(⋅) 表示解码器。1. 第二阶段融合: 在第二阶段,解码器使用融合后的基础特征 YBIVYBIV** 和细节特征 YDIVYDIV** 生成融合图像 FIV**F***I**V**。融合图像的生成过程表示为 FIV=D(YBIV,YDIV)**I**V**=D(YB**IV**,YDIV**)。

域自适应层

概述

域自适应层的作用是减少红外图像和可见光图像特征之间的分布差异,从而实现跨模态的特征对齐。域自适应层被引入到基础编码器的最后三个卷积层中,以对齐全局特征。细节编码器避免使用MK-MMD,以保留局部细节和模态特定的信息。

域自适应层的主要目的是减少不同模态(红外和可见光)图像特征之间的分布差异,使得网络能够更好地进行特征融合。通过减少分布差异,域自适应层有助于提高融合图像的质量,尤其是在复杂场景下。

域自适应层通过计算多核最大均值差异(MK-MMD)来实现特征对齐。MK-MMD是一种度量两个概率分布差异的方法,它通过在再生核希尔伯特空间(RKHS)中评估分布的距离来工作。通过将特征映射到RKHS,域自适应层使用混合核函数计算分布差异,从而实现特征对齐。

在训练过程中,域自适应层通过最小化MK-MMD损失来优化网络参数,使得红外和可见光图像的特征分布更加接近。

多核最大均值差异(MK-MMD)
  1. MK-MMD的定义: MK-MMD是一种基于核方法的距离度量,它使用多个不同带宽参数的高斯核的线性组合来评估两个分布之间的差异。公式表示为:

其中,SIS****I 和 SVS****V 分别代表红外和可见光图像的特征分布,FIF****I 和 FVF****V 是这些特征在RKHS中的映射,E[⋅]E[⋅] 表示期望,∥⋅∥Hk2∥⋅∥H****k2 是RKHS中的平方范数。

  1. 混合核函数: 混合核函数定义为:
1. 中,kG**k****G** 是高斯核,kL**k****L** 是拉普拉斯核,c1**c**1 和 c2**c**2 是核的权重,它们的和为1。 高斯核适合捕捉全局结构信息,而拉普拉斯核对边缘更敏感,适合捕捉局部细节。通过结合这两种核,混合核函数能够同时捕获全局和局部特征。 ### 两阶段训练

为了应对红外和可见光图像融合中缺乏真实标签的问题,本文采用了两阶段学习方案来训练DAF-Net。

第一阶段:编码器-解码器分支训练

在第一阶段,目标是独立地训练编码器和解码器,以便它们能够从输入的红外和可见光图像中提取特征,并重建出高质量的图像。

训练过程

下面是第一阶段的训练过程。

  1. 共享特征提取: 输入数据包括成对的红外图像和可见光图像。输入图像首先通过共享特征层,用于提取图像的初步特征。1. 基础编码器: 共享特征层的输出被送入基础编码器,负责捕获图像的全局结构信息。1. 细节编码器: 同时,共享特征层的输出也被送入细节编码器,提取图像的细节和纹理信息。1. 域自适应层: 在基础编码器中,域自适应层通过计算MK-MMD来减少红外和可见光图像特征分布之间的差异,实现特征对齐。1. 特征融合: 基础编码器和细节编码器提取的特征被送入融合层,在这里,基础特征和细节特征被合并。1. 图像重建: 融合后的特征被送入解码器,用于重建红外图像和可见光图像。
损失函数

第一阶段的损失函数是重建损失、相关性损失、InfoNCE损失、MK-MMD损失的加权和。

  • 重建损失:包括均方误差(MSE)损失、结构相似性指数(SSIM)损失和梯度损失,用于衡量重建图像与原始图像之间的差异。
第二阶段:融合层训练

在第二阶段,目标是训练融合层,以便它们能够将从红外和可见光图像中提取的特征融合,生成高质量的融合图像。

训练过程
  1. 特征提取: 输入数据包括成对的红外图像和可见光图像,使用第一阶段训练好的编码器提取红外和可见光图像的特征。1. 特征融合: 提取的基础特征和细节特征被送入融合层,融合层将这些特征合并成单一的融合特征表示。1. 融合图像生成: 融合后的特征被送入解码器,解码器负责从融合特征中重建出融合图像。
损失函数

融合层训练的损失函数是强度损失、最大梯度损失和相关性损失的加权和。

  • 强度损失:衡量融合图像与输入图像在强度上的差异。

实验与结果

实验在三个数据集上进行:MSRS、RoadScene和TNO。部分MSRS数据集用于训练,其余部分和TNO、RoadScene数据集用于评估。采用的评价指标包括互信息(MI)、视觉信息保真度(VIF)、熵(EN)、标准差(SD)、空间频率(SF)、边缘信息QAB/F和结构相似性指数(SSIM)。

我们的实验配置是 PyTorch 1.9.0 Python 3.8(ubuntu18.04) Cuda 11.1 GPU RTX 3080 Ti(12GB)

我们在训练好模型之后,在MSRS、RoadScene和TNO数据集上,分别随机选择了361张、50张、25张图像构成测试集,测试集在附件中附上。最终的测试结果是

测试数据展示如下,从左至右依次为红外图像、可见光图像和融合图像。

可以看到,DAF-Net在融合过程中有效保留了红外图像的热辐射信息和可见光图像的细节。

总结

本文介绍了一种名为DAF-Net的新型红外和可见光图像融合网络。该网络通过引入多核最大均值差异和设计混合核函数来对齐红外和可见光图像的潜在特征空间,从而提高融合图像的质量。DAF-Net采用了双分支结构,包括一个基于Restormer网络的基础编码器和一个基于可逆神经网络的细节编码器,分别捕获全局结构信息和细节纹理信息。通过这种结构,DAF-Net能够在保持全局结构的同时,保留模态特定的细节信息。

此外,DAF-Net采用了两阶段训练策略来解决红外和可见光图像融合中缺乏地面真实数据的问题。第一阶段侧重于训练编码器-解码器分支以重建红外和可见光图像,第二阶段则专注于训练融合层以生成融合图像。损失函数包括重建损失、相关性损失、InfoNCE损失和MK-MMD损失,以及强度损失和最大梯度损失,这些损失函数共同优化了网络的性能。

总体而言,DAF-Net通过其创新的网络架构和训练策略,在红外和可见光图像融合领域提供了一种有效的解决方案,能够生成具有高视觉质量和融合性能的融合图像,具有广泛的应用前景。

参考文献,全部资源均可在该地址获取:https://www.aspiringcode.com/content?id=17323478187973&uid=3bf8b73ec4ff407a90291a8502a8c1db


相关文章:

基于域自适应的双光融合

目录 引言DAF-Net编码器-解码器分支编码器部分融合层解码器部分 域自适应层概述多核最大均值差异(MK-MMD)第一阶段:编码器-解码器分支训练训练过程损失函数 第二阶段:融合层训练训练过程损失函数 实验与结果总结 文章声明&#xf…...

迭代器模式 (Iterator Pattern)

文章目录 迭代器模式 (Iterator Pattern)原理优点缺点示例代码场景描述1. 定义迭代器接口2. 定义集合接口3. 实现具体集合类4. 客户端代码输出结果 UML 类图使用场景优化与扩展小结 迭代器模式 (Iterator Pattern) 迭代器模式是一种 行为型设计模式,用于顺序访问集…...

039集——渐变色之:CAD中画彩虹()(CAD—C#二次开发入门)

(来左边儿 跟我一起画个龙,在你右边儿 画一道彩虹 ~~~~~~~~~~~ ) 效果如下: namespace AcTools {public class Class1{public Wform.Timer timer;//定时器需建在类下面public static DateTime startTime;[CommandM…...

如何将 GitHub 私有仓库(private)转换为公共仓库(public)

文章目录 如何将 GitHub 私有仓库转换为公共仓库步骤 1: 登录 GitHub步骤 2: 导航到目标仓库步骤 3: 访问仓库设置步骤 4: 更改仓库可见性步骤 5: 确认更改步骤 6: 验证更改注意事项 如何将 GitHub 私有仓库转换为公共仓库 在软件开发领域,GitHub 是一个广受欢迎的…...

C++11 右值引用

目录 左值 右值 左值引用与右值引用比较 左值引用总结: 右值引用总结: 左值引用的使用场景: 引用传参和做返回值都可以提高效率(减少拷贝) 左值引用的短板: 右值引用和移动语义解决上述问题: 下面就是有移动…...

WPS表格学习计划与策略

一、学习目标 掌握WPS表格的基本操作:包括新建、打开、保存工作簿,单元格的编辑与格式化,数据的输入与验证等。熟练运用WPS表格的数据处理功能:包括数据排序、筛选、分类汇总,以及使用公式和函数进行计算和分析。学会制作图表与数据可视化:掌握不同类型图表(如柱状图、折…...

Android 引入 proto 项目及使用方法

Proto(Protocol Buffers)是Google开发的一种语言无关、平台无关的序列化结构数据的方法,它类似于JSON和XML,但相对于XML而言更小,相对于JSON而言解析更快,支持多语言。以下是将Proto引入Android项目的方法及…...

VSOMEIP主要流程的时序

请求服务: client应用: ​ application_impl::request_service ​ routing_manager_client::request_service (老版本是routing_manager_proxy) ​ routing_manager_client::send_request_services ​ protocol::request_service_command its_command; // 创建…...

右值引用和移动语义:

C 右值引用和移动语义详解 在 C 的发展历程中,右值引用和移动语义的引入带来了显著的性能提升和编程灵活性。本文将深入探讨右值引用和移动语义的概念、用法以及重要性。 一、引言 C 作为一门高效的编程语言,一直在不断演进以满足现代软件编程的需求。…...

经纬高LLA转地心地固ECEF坐标,公式,代码

经纬高转地心地固的目的 坐标系转换是gis或者slam系统常见操作。GNSS获取的一般是经纬高,经纬高在slam系统里无法应用,slam系统一般是xyz互相垂直的笛卡尔坐标系,所以需要把GNSS的经纬高转到直角坐标系地心地固ECEF或者高斯投影GKP。 划重点…...

VUE前端实现天爱滑块验证码--详细教程

第一步: Git地址:tianai-captcha-demo: 滑块验证码demo 找到目录 src/main/resources/static,拷贝 static 并改名为 tac 即可。 第二步: 将改为 tac 的文件,放进项目根目录中,如下图: 第三步&#xff1…...

【链表】【删除节点】【刷题笔记】【灵神题单】

237.删除链表的节点 链表删除节点的本质是不用删除,只需要操作指针,跳过需要删除的节点,指向下下一个节点即可! 删除某个节点,但是不知道这个节点的前一个节点,也不知道头节点!摘自力扣评论区…...

springboot339javaweb的新能源充电系统pf(论文+源码)_kaic

毕 业 设 计(论 文) 题目:新能源充电系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解…...

【嵌入式——QT】QT制作安装包

第一步 QT程序写好之后,编译release版本 第二步 拿到release生成的.exe文件 第三步 新建文件夹deploy 第四步 将.exe文件复制到deploy目录下 第五步 在该目录下输入cmd指令,回车 第六步 在打开的命令窗口下输入 windeployqt TegNetCom_1.0.…...

python的文件操作练习

文件操作&#xff1a;成绩统计 有一个文件grades.txt&#xff0c;文件内容是每行一个学生的成绩&#xff08;格式&#xff1a;姓名,成绩&#xff09;。要求&#xff1a; 读取文件内容&#xff0c;统计所有学生的平均成绩&#xff1b; 将不及格&#xff08;<60分&#xff09…...

jQuery九宫格抽奖,php处理抽奖信息

功能介绍 jQuery九宫格抽奖是一种基于jQuery库的前端抽奖效果。通过九宫格的形式展示抽奖项&#xff0c;用户点击抽奖按钮后&#xff0c;九宫格开始旋转&#xff0c;最终停在一个随机位置上&#xff0c;此位置对应的抽奖项为用户的中奖结果。 本文实现九宫格的步骤为&#xf…...

2024年一级建造师考试成绩,即将公布!

一级建造师考试成绩一般在考试结束后3个月左右的时间公布&#xff01; 根据官方通知&#xff0c;重庆、江苏、青海、江西、云南、湖南、福建、北京、山西、黑龙江等地在今年一建报名通知里提到&#xff1a;2024年一级建造师考试成绩预计于2024年12月上旬公布。考生可在这个时间…...

M4V 视频是一种什么格式?如何把 M4V 转为 MP4 格式?

M4V 是一种视频文件格式&#xff0c;主要由苹果公司用于其产品和服务中&#xff0c;如 iTunes Store 上的电影和电视节目。这种格式可以包含受版权保护的内容&#xff0c;并且通常与苹果的 DRM&#xff08;数字版权管理&#xff09;技术结合使用&#xff0c;以限制内容的复制和…...

Leetcode 每日一题 104.二叉树的最大深度

目录 问题描述 示例 示例 1&#xff1a; 示例 2&#xff1a; 约束条件 题解 方法一&#xff1a;广度优先搜索&#xff08;BFS&#xff09; 步骤 代码实现 方法二&#xff1a;递归 步骤 代码实现 结论 问题描述 给定一个二叉树 root&#xff0c;我们需要返回其最大…...

文件上传漏洞:你的网站安全吗?

文章目录 文件上传漏洞攻击方式&#xff1a;0x01绕过前端限制0x02黑名单绕过1.特殊解析后缀绕过2..htaccess解析绕过3.大小写绕过4.点绕过5.空格绕过6.::$DATA绕过7.配合中间件解析漏洞8.双后缀名绕过9.短标签绕过 0x03白名单绕过1.MIME绕过(Content-Type绕过)2.%00截断3.0x00截…...

AWS账号提额

Lightsail提额 控制台右上角&#xff0c;用户名点开&#xff0c;选择Service Quotas 在导航栏中AWS服务中找到lightsail点进去 在搜索框搜索instance找到相应的实例类型申请配额 4.根据自己的需求选择要提额的地区 5.根据需求来提升配额数量,提升小额配额等大约1小时生效 Ligh…...

电子应用设计方案-29:智能云炒菜系统方案设计

智能云炒菜系统方案设计 一、系统概述 本智能云炒菜系统旨在为用户提供便捷、高效、个性化的烹饪体验&#xff0c;结合云技术实现远程控制、食谱分享、智能烹饪流程优化等功能。 二、系统组成 1. 炒菜锅主体 - 高品质不粘锅内胆&#xff0c;易于清洁和维护。 - 加热装置&#x…...

腾讯rapidJson使用例子

只需要把库的头文件拿下来加入项目中使用就行&#xff0c;我是以二进制文件存储内容并解析&#xff1a; #include <iostream> #include <fstream> #include <string> #include "rapidjson/document.h" #include "rapidjson/error/en.h"…...

UE5_CommonUI简单使用(2)

上篇我是简单写了一下CommonUI使用的初始设置以及Common Activatable Widget和Common Activatable Widget Stack以及Common 控件Style以及鼠标控制的一些内容,这些对于了解UMG的朋友来说没什么难度,唯一需要注意的就是Common Activatable Widget Stack堆栈管理只能是用来管理…...

探讨播客的生态系统

最近对播客发生了兴趣&#xff0c;从而引起了对播客背后的技术&#xff0c;生态的关注。本文谈谈播客背后的技术生态系统。 播客很简单 播客&#xff08;podcast&#xff09;本质上就是以语音的方式发布信息。它和博客非常类似。如果将CSDN 网站上的文字加一个语音播报。CSDN …...

淘宝架构演化

基本功能 LAMP&#xff08;LinuxApacheMySQLPHP&#xff09;标准架构&#xff0c;初期采用拿来主义&#xff0c;只具备基本功能。 数据库&#xff1a;读写分离&#xff0c;MyISAM存储引擎 2003年5月—2004年1月 存储瓶颈 mysql达到访问瓶颈&#xff0c;升级成oracle&#x…...

软通动力携子公司鸿湖万联、软通教育助阵首届鸿蒙生态大会成功举办

11月23日中国深圳&#xff0c;首届鸿蒙生态大会上&#xff0c;软通动力及软通动力子公司鸿湖万联作为全球智慧物联网联盟&#xff08;GIIC&#xff09;理事单位、鸿蒙生态服务&#xff08;深圳&#xff09;有限公司战略合作伙伴&#xff0c;联合软通教育深度参与了大会多项重磅…...

【AI绘画】DALL·E 3 绘图功能与 DALL·E API 探索

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AI绘画 文章目录 &#x1f4af;前言&#x1f4af;DALLE 3 图像生成介绍&#xff08;Introduction to DALLE 3 Image Generation&#xff09;图像质量与分辨率图像生成机制的解析多图生成功能 &#x1f4af;使用 DALLE…...

【数据事务】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...

深入解析下oracle char和varchar2底层存储方式

oracle数据库中&#xff0c;char和varchar2数据类型用来存储字符数据。char类型一旦定义多大&#xff0c;那么它就分配多少字节空间&#xff1b;varchar2类型定义多大&#xff0c;代表它可以扩展的最大大小为多大&#xff0c;一开始空间根据使用来决定。字符数据存储在oracle表…...

动态网站开发语言的优势与不足/如何制作企业网站

现在很多人做数据分析会被推荐选择去用编程R和Python、PowerBI、Tableau、Qlik、Smartbi… 从目前数据分析的行业来说&#xff0c;Excel是世界上使用人数最多的报表分析工具&#xff0c;没有之一。过去是&#xff0c;现在是&#xff0c;可预见的将来也是。可惜的是大多数人都不…...

简易静态网站制作流程图/seo就业

一、双亲存储结构 typedef struct {int data;int parent; }PTree[max_size];//P表示parent图像如下&#xff1a; 二、孩子链存储结构 typedef struct snode{ int data; node *next;//指向兄弟&#xff1b; }Son_node;typedef struct{ int data; int parent; Son_node *fir…...

北京门户网站网址/考研培训

为防止点击窗体右上角的关闭按钮&#xff08;X按钮&#xff09;关闭窗体&#xff0c;我们可以覆盖WndProc过程&#xff0c;只要发现消息为WM_SYSCOMMAND且wparam参数为SC_CLOSE就不让继续传下去。 Delphi代码&#xff1a; unit Unit1;interfaceusesWinapi.Windows, Winapi.Mess…...

wordpress的登陆地址修改密码/网站制作费用一览表

1&#xff09;、C#中重写窗口过程不用再调用SetWindowLong API了&#xff0c;直接overide一个WndProc就可以了。 2&#xff09;、Windows API中的HDC可以通过Graphics.FromHdc()转换为(创建出)System.Drawing.Graphics&#xff0c;然后就可以用.NET Framework &#xff08;GID?…...

网站免费正能量不用下载/北京学电脑的培训机构

2019独角兽企业重金招聘Python工程师标准>>> Windows下JAVA用到的环境变量主要有3个&#xff0c;JAVA_HOME、CLASSPATH、PATH。 JAVA_HOME 指向的是JDK的安装路径&#xff0c;如C:\jdk1.5.0_06&#xff0c;在这路径下你应该能够找到bin、lib等目录。 PATH 环境变量…...

汕尾北京网站建设/线下推广活动策划方案

恩&#xff0c;快要下班了&#xff0c;我先捡重要的说奥 1、首先了在函数体内 "局部变量" 优先于 "全局变量" &#xff0c;这其实算是废话了 var a aa;var test function(){var a bb;alert(a);}test(); 2、js无块级作用域&#xff0c;至于这块级作用域&…...