告别被坑!掌握合合信息AI图像篡改检测工具,轻松识别图片造假

news2024/12/24 2:40:04

文章目录

  • 一、前言
    • 1.1 背景与危害
    • 1.2会议探讨
    • 1.3 技术先行
  • 二、亮点技术1:AI图像篡改检测技术
    • 2.1 传统方法Python实现步骤
    • 2.2 合合信息——PS纂改检测体验
  • 三、亮点技术2:生成式图像鉴别
    • 3.1 生成式图像安全问题
    • 3.2 传统方法Python实现步骤
    • 3.2 合合信息——生成式图像鉴别模型
  • 四、亮点技术3:OCR对抗攻击技术
    • 4.1 传统方法Python实现步骤
    • 4.2 合合信息——OCR对抗攻击技术
  • 五、总结

一、前言

1.1 背景与危害

AI生成(AIGC)技术的快速发展给社会带来了一系列严重的问题和挑战。其中包括截图伪造、生成式图片和身份信息泄露等方面。
首先,AI造假技术使得截图伪造变得更加容易和逼真。通过使用AI技术,可以轻松地修改和伪造截图,使其看起来与原始截图几乎没有区别。这使得虚假信息更加难以辨别,给社会带来了巨大的信息安全风险。虚假截图可能被用于传播虚假信息、篡改证据、进行网络诈骗等违法犯罪行为。

其次,生成式图片技术也是AI造假的重要方面。通过生成对抗网络(GAN)等技术,可以生成逼真的虚假图片。这些虚假图片可能被用于虚假广告、造假证据、网络欺诈等目的。生成式图片的逼真程度越来越高,使得辨别真假变得更加困难。

此外,AI技术的滥用也可能导致个人身份信息的泄露。通过分析个人照片、社交媒体信息和其他公开数据,AI可以生成逼真的人脸图像,并用于冒充他人身份。这给个人隐私和数据安全带来了严重的风险。

1.2会议探讨

图像作为信息的主要来源之一,随着人工智能的发展,利用AI进行图像伪造和篡改行为已成为一个严重的安全挑战。为了应对这一挑战,中国信息通信研究院(中国信通院)在2023年世界人工智能大会(WAIC)上组织了一个专题论坛,主题是“多模态基础大模型的可信AI”。

1.3 技术先行

提前布局,合合信息AI图像安全技术助力行业健康发展。合合信息AI图像安全技术方案主要包括三项重点技术:AI图像篡改检测、生成式图像鉴别、OCR对抗攻击技术,以应对日益高发的恶意P图、生成式造假和个人信息非法提取现象。

二、亮点技术1:AI图像篡改检测技术

2.1 传统方法Python实现步骤

AI图像篡改检测技术的实现步骤通常包括以下几个方面:

  1. 数据收集和预处理:首先需要收集大量的正常和被篡改的图像数据,并对这些数据进行预处理,如缩放、裁剪、归一化等操作,以便于后续的分析和处理。

  2. 特征提取和选择:在对图像进行分析之前,需要先从图像中提取出一些有用的特征,如颜色、纹理、形状等。然后根据实际需求,选择合适的特征进行分析。

  3. 模型训练和优化:基于所选的特征,使用深度学习算法(如卷积神经网络)训练出一个能够识别图像篡改的模型。在训练过程中,需要不断调整模型参数和超参数,以提高模型的准确性和鲁棒性。

  4. 模型测试和评估:在完成模型训练后,需要对其进行测试和评估,以检验其在实际应用中的性能和效果。常用的评估指标包括准确率、召回率、F1值等。

  5. 应用部署和维护:当模型经过测试和评估后,可以将其部署到实际应用场景中,如银行、保险等领域。同时,还需要对模型进行持续的维护和更新,以保证其在不断变化的应用环境中的稳定性和可靠性。

以下是一个简单的 Python 图像篡改检测代码示例:

import cv2
import numpy as np

def detect_tampering(image_path):
    # 加载图像
    image = cv2.imread(image_path)
    
    # 将图像转换为灰度图
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
    # 计算图像的梯度
    gradient_x = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=3)
    gradient_y = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=3)
    
    # 计算梯度幅值
    gradient_magnitude = np.sqrt(gradient_x**2 + gradient_y**2)
    
    # 对梯度幅值进行阈值处理
    threshold = np.max(gradient_magnitude) * 0.1
    gradient_magnitude[gradient_magnitude < threshold] = 0
    
    # 统计图像中非零像素的数量
    non_zero_pixels = np.count_nonzero(gradient_magnitude)
    
    # 根据非零像素数量判断是否有篡改
    if non_zero_pixels > 0.01 * gradient_magnitude.size:
        print("图像被篡改")
    else:
        print("图像未被篡改")

# 使用示例
detect_tampering("image.jpg")

这个代码使用 Sobel 算子计算图像的梯度,并通过阈值处理将梯度幅值较小的像素设为零。然后根据非零像素数量来判断图像是否被篡改。如果非零像素数量超过图像总像素数的 1%,则认为图像被篡改。

不过这种开源代码检测的效果远远比不上下面合合信息检测工具的效果。

2.2 合合信息——PS纂改检测体验

(1)打开合合信息官网:https://b.intsig.com/ocr,点击PS纂改检测

(2)点击申请试用


(3)仿纂改检测效果展示,被篡改地方都是以热力图的形式展示图像区域

这项名为“PS篡改检测”的技术,以其强大的“像素级”分析能力而脱颖而出。它能够深度挖掘图像被篡改后的特征变化,覆盖了包括身份证、护照等多种重要证件识别类目。

合合信息的篡改检测技术再升级可以检测多种截图、转账记录、交易记录、聊天记录等。不论是采用“复制移动”手段,将关键要素从原图中“抠下”并移动至其他位置,还是通过“擦除”、“重打印”等方式进行的图片篡改,合合信息的图像篡改检测技术都能准确识别。这项技术利用先进的深度学习和计算机视觉算法,能够精准分析图像的特征、纹理和结构,从而识别出任何形式的篡改。

给定一张图片,输入到合合信息篡改检测模型中,便能够判别这张图像是否被篡改,并且定位出篡改图像的篡改区域:

相比于证照篡改检测,截图检测更加困难。截图的背景通常没有纹路和底色,整个截图缺乏光照差异。而证件篡改识别可以通过拍照时产生的成像差异来判断篡改痕迹,但截图则没有这些“信息”。因此,现有的视觉模型往往难以充分发掘原始图像和篡改图像之间的细粒度差异特征,导致准确率不高。

为了解决这个问题,合合信息提出了一种基于HRNet的编码器-解码器结构的图像真实性鉴别模型。这种模型结合了图像本身的信息,包括但不限于噪声、频谱等,从而能够捕捉到细粒度的视觉差异。通过这种方式,合合信息的技术能够实现高精度的截图检测,从而让截图造假无所遁形。

这一技术的突破对于保护个人信息安全和打击欺诈行为具有重要意义。它不仅能够提高截图检测的准确率,还能够控制误检率,确保不会误判合法的图片。合合信息的图像篡改检测技术将为数字时代的信息安全提供更加可靠的保障,为社会的发展和公众的利益做出贡献。

三、亮点技术2:生成式图像鉴别

3.1 生成式图像安全问题

开年以来,以语言生成类、视觉生成类模式为代表的AIGC产品引发了社会对于图文内容“可信度”问题的讨论。AIGC爆火的背后,不法分子通过生成的图片去规避版权、身份验证,非法获取利益,给人民群众造成了财产损失。

比如AI作画公司用画家作品用于训练,普通人几分钟就可以生产出类似高水平且无版权的作品:

3.2 传统方法Python实现步骤

生成式图像鉴别技术的实现步骤通常包括以下几个关键步骤:

  1. 数据收集和准备:收集包含真实图像和生成式图像的大规模数据集,并进行标注和预处理。确保数据集的多样性和代表性,以便训练出具有泛化能力的模型。

  2. 模型选择和构建:选择适合生成式图像鉴别任务的模型架构,常见的包括深度卷积神经网络(CNN)和生成对抗网络(GAN)。根据任务需求和数据集特点,构建合适的模型结构。

  3. 模型训练:使用准备好的数据集对模型进行训练。通过反向传播算法和优化器来更新模型的参数,使其能够准确地区分真实图像和生成式图像。训练过程中需要注意正则化和防止过拟合的方法。

  4. 模型评估和调优:使用独立的测试集对训练好的模型进行评估,计算准确率、召回率、精确度等指标。根据评估结果对模型进行调优,如调整超参数、增加训练数据等。

  5. 部署和应用:将训练好的模型部署到实际应用中,可以是在服务器端进行图像鉴别,也可以是集成到移动设备或其他平台上。根据具体应用场景和需求,进行适当的优化和性能调整。

需要注意的是,生成式图像鉴别技术的实现步骤可能因具体任务和方法而有所不同,上述步骤仅为一般性的参考。在实际应用中,还需要考虑数据隐私、模型鲁棒性和系统的实时性等因素,以确保技术的可靠性和有效性。

以下是一个简单的 Python 生成式图像鉴别代码示例:

import cv2
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

def extract_features(image_path):
    # 加载图像
    image = cv2.imread(image_path)
    
    # 调整图像大小为固定尺寸
    image = cv2.resize(image, (100, 100))
    
    # 提取图像特征
    features = np.reshape(image, (1, -1))
    
    return features

def train_model():
    # 加载正样本图像
    real_images = []
    for i in range(1, 101):
        image_path = f"real_images/real_{i}.jpg"
        features = extract_features(image_path)
        real_images.append(features)
    
    # 加载生成式样本图像
    fake_images = []
    for i in range(1, 101):
        image_path = f"fake_images/fake_{i}.jpg"
        features = extract_features(image_path)
        fake_images.append(features)
    
    # 创建标签
    real_labels = [1] * len(real_images)
    fake_labels = [0] * len(fake_images)
    
    # 合并样本和标签
    X = np.concatenate((real_images, fake_images), axis=0)
    y = np.concatenate((real_labels, fake_labels), axis=0)
    
    # 划分训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # 训练随机森林分类器
    model = RandomForestClassifier(n_estimators=100)
    model.fit(X_train, y_train)
    
    # 在测试集上评估模型性能
    accuracy = model.score(X_test, y_test)
    print("模型准确率:", accuracy)

# 使用示例
train_model()

这个代码使用了一个随机森林分类器来进行生成式图像的鉴别。首先,通过 extract_features 函数提取图像的特征,这里使用了简单的图像像素值作为特征。然后,加载正样本和生成式样本的图像,并为它们创建对应的标签。接下来,将样本和标签合并,并使用 train_test_split 函数将数据集划分为训练集和测试集。然后,使用随机森林分类器进行训练,并在测试集上评估模型性能。最后,打印模型的准确率。你可以将正样本和生成式样本的图像路径替换为你自己的数据集路径。

上面是我用Python 方法实现生成式图像鉴别,效果一般,与合合信息识别系统效果差了不止亿点点。

3.2 合合信息——生成式图像鉴别模型

该项目面临的难点主要可以归结为两个方面:一是生成出来的图像场景繁多,不可能通过穷举的方式来解决;二是有些生成的图像与真实图片的相似度非常高,几乎无法从人类的判断角度区分,对机器而言更加困难。

针对这些难点,合合信息提出了一种基于空域与频域关系建模的方法,能够在不需要穷举所有可能的图片的情况下,利用多维度特征来准确分辨真实图片和生成式图片之间的细微差异。

通过对空域和频域的关系进行建模,合合信息的技术能够从不同的角度捕捉到真实图片和生成式图片之间的差异。这种多维度特征的分析方法使得机器能够更准确地判断图片的真实性,克服了生成式图片与真实图片相似度高的问题。

模型结构如下图所示:

在该模型中,通过多个空间注意力头来聚焦于图像的空间特征,并利用纹理增强模块来放大浅层特征中的微小伪影,从而提升模型对真实人脸和伪造人脸的感知和判断准确度。在各种复杂场景下,该模型能够高度可靠地区分真实人脸和伪造人脸。同时,相关技术也在不断地迭代和改进中,以进一步提升模型的性能和适应性。

这一技术的突破对于保护个人信息安全和打击人脸伪造行为具有重要意义。通过该模型的应用,可以有效地防止人脸伪造带来的欺骗和安全威胁。

生成式图像检测技术在反诈骗、版权保护等领域具有广泛的应用空间。特别是在金融行业,不法分子利用AI合成技术对线上资金进行盗刷的情况时有发生,这对公民的财产安全构成了威胁。然而,本项技术的应用可以通过对支付环节的干预来降低资金盗刷的概率,提供更可靠的资金安全保障。

在传媒行业中,一些图片供给方利用软件自动生成海报等图片,并故意隐瞒其来源,将其售卖给第三方。然而,第三方在不知情的情况下进行商业使用,导致了侵权问题的发生。相关的图像检测技术可以在一定程度上解决这些问题,通过对图片的来源和真实性进行检测,确保第三方在使用图片时不会侵犯版权。

四、亮点技术3:OCR对抗攻击技术

人们会出于生活、工作需要,拍摄自己的相关证件、文件并发送给第三方,这些图片上承载的个人信息可能被不法分子使用OCR技术识别提取并泄露。基于个人、企业业务的文件资料保密需求,合合信息进行了创新技术探索,研发了OCR对抗攻击技术来进行文档图片“加密”。

4.1 传统方法Python实现步骤

OCR 对抗攻击技术的实现步骤可以分为以下几个阶段:

  1. 收集数据集:首先需要收集用于训练和测试的OCR模型的数据集。数据集应包含各种类型的文本、字体、背景和扭曲等变化。

  2. 训练OCR模型:使用收集到的数据集,训练一个OCR模型。常用的OCR模型包括卷积神经网络(CNN)和循环神经网络(RNN)等。

  3. 选择攻击技术:根据具体的需求和场景,选择合适的OCR对抗攻击技术。常见的OCR对抗攻击技术包括添加噪声、图像扭曲、对抗样本生成等。

  4. 生成对抗样本:使用选择的攻击技术,对原始图像进行处理,生成对抗样本。对抗样本的生成过程可以通过添加噪声、扭曲图像、改变光照条件等方式来改变原始图像的特征,使其能够误导OCR模型。

  5. 评估攻击效果:使用生成的对抗样本对训练好的OCR模型进行测试,评估攻击效果。可以通过计算攻击成功率、误分类率等指标来评估攻击效果。

  6. 调整攻击参数:根据评估结果,调整攻击技术的参数,进一步提高攻击效果。

  7. 防御对抗攻击:根据对抗攻击的特点和实现方法,设计相应的防御策略。常见的防御方法包括使用对抗训练、检测对抗样本等。

  8. 优化攻击技术:根据防御策略的效果,优化攻击技术,提高攻击效果和鲁棒性。

对于OCR对抗攻击技术的代码实现,以下是一个简单的Python示例:

import cv2
import numpy as np

def add_noise(image):
    # 添加随机噪声
    noise = np.random.normal(0, 1, image.shape).astype(np.uint8)
    noisy_image = cv2.add(image, noise)
    return noisy_image

def distort_text(image):
    # 扭曲文本形状
    rows, cols = image.shape[:2]
    distortion_map = np.zeros_like(image)
    for i in range(rows):
        for j in range(cols):
            x = int(j + 20 * np.sin(2 * np.pi * i / 50))
            y = i
            if x < cols:
                distortion_map[y, x] = image[i, j]
    distorted_image = cv2.remap(image, distortion_map, None, cv2.INTER_LINEAR)
    return distorted_image

def apply_attack(image_path):
    # 加载图像
    image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
    
    # 添加噪声
    noisy_image = add_noise(image)
    
    # 扭曲文本
    distorted_image = distort_text(noisy_image)
    
    # 保存攻击后的图像
    attacked_image_path = 'attacked_image.jpg'
    cv2.imwrite(attacked_image_path, distorted_image)
    print("攻击后的图像已保存为:", attacked_image_path)

# 使用示例
apply_attack("document.jpg")

这个代码示例展示了两种常见的OCR对抗攻击技术:添加随机噪声和扭曲文本形状。首先,通过 add_noise 函数向图像中添加了随机噪声。然后,使用 distort_text 函数对图像中的文本进行了扭曲处理。最后,保存攻击后的图像。

请注意,这只是一个简单的示例,实际上,OCR对抗攻击技术可能涉及更复杂的图像处理和扰动方法。具体的代码实现可能因应用场景和需求而有所不同。

4.2 合合信息——OCR对抗攻击技术

合合信息的OCR对抗攻击技术是一种创新的技术解决方案,旨在保护个人和企业的文件资料的隐私和机密性。该技术可以对文档图片进行加密,以防止不法分子使用OCR技术识别和提取其中的个人信息:

该技术有助于防止第三方通过OCR系统读取和保存图像中的文字内容,降低数据泄露的风险。这种技术创新能够在不影响肉眼观看和判断的情况下,有效保护信息的安全和隐私。

五、总结

AI造假技术的出现给社会带来了一系列挑战和问题。然而合合信息AI图像内容检测工具的出现,在保护图像真实性和识别文本方面发挥了重要的作用。 通过自动化、高准确性和多样化的检测功能,这些技术能够帮助用户检测和防御图像篡改、生成式图像欺骗和OCR对抗攻击等问题。然而,随着技术的发展,这些攻击技术也在不断演进,需要不断改进和完善相应的防御措施,以保护图像和文本的安全和可信度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/747508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

03_007linux内存管理架构以虚拟内存空间布局架构

内存管理子系统架构 内存管理子系统架构可以分为:用户空间、内核空间及硬件部分3个层面&#xff0c;具体结构如 下图所示: 1、用户空间:应用程序使用malloc()申请内存资源/free()释放内存资源。 2、内核空间:内核总是驻留在内存中&#xff0c;是操作系统的一部分。内核空间为内…

nginx uwsgi配置django

uwsgi文件 [uwsgi] # 服务端口号&#xff0c;这里没有设置IP值&#xff0c;默认是加载服务器的IP地址 #http :5000 socket:8000 # flask项目地址 chdir /pyprogram/electric # wsgi文件 /home/flask_project/mange.py #module app:app wsgi-file/pyprogram/electric/electr…

CompletionService的基本使用以及原理

文章目录 一、CompletionService的简介二、CompletionService的底层大致原理三、CompletionService的使用场景1. 批量下载文件&#xff1a;2. 多个商品价格查询&#xff1a;3. 并发处理多个API请求&#xff1a; 四、CompletionService的使用demo1. 代码如下&#xff1a;2. 案例…

mac上 如何批量在文件名中插入文字

mac上 如何批量在文件名中插入文字&#xff1f;在使用Mac电脑的时候&#xff0c;我们经常需要对大量文件的名称进行修改&#xff0c;例如需要在大量文件的名称中插入一些相同的文字或者字符的时候&#xff0c;你会用什么方法来完成这项工作呢&#xff1f;相信很多人就面对过类似…

前端vue入门(纯代码)30_路由的props配置

喜欢的东西太贵了&#xff0c;我一咬牙&#xff0c;狠下心决定不喜欢了&#xff01; 【28.Vue Router--路由的props配置】 props配置官网文档 props属性用法和params属性差不多&#xff0c;都是要在src/router/index.js文件中配置 // 该文件专门用于创建整个应用的路由器 i…

Spring 项目的创建和使用1(配置国内源)

目录 一、Spring项目的创建 1. 创建Maven项目 2. 添加Spring依赖&#xff08;重要&#xff09; (1) 必须要设置两个配置文件的国内源配置&#xff08;当前项目配置文件&#xff0c;新项目配置文件&#xff09; (2) 复制上一步中的User setting file 后面的路径在文件资源管理…

SpringBoot集成Flowable工作流

SpringBoot集成Flowable工作流 Flowable是什么&#xff1f;一、添加依赖二、flowable配置三、定义流程文件1.使用流程文件定义工作流2.idea使用插件来定义流程图1.安装插件2.创建bpmn文件并画流程图3.右击流程用模型设计器打开文件 四、测试controller Flowable是什么&#xff…

美女与修狗儿【 InsCode Stable Diffusion 美图活动一期】

女朋友最近买了一只小泰迪&#xff0c;于是给她和修狗儿做一幅画 一、Stable Diffusion 模型在线使用地址 https://inscode.csdn.net/inscode/Stable-Diffusion 二、模型版本及相关配置 模型&#xff1a;chilloutmix-Ni.safetensors[7234b76e42采样方法&#xff1a;Euler a…

算法拾遗三十五indexTree和AC自动机

算法拾遗三十五indexTree和AC自动机 indexTree&#xff08;树状数组&#xff09;indexTree规则 IndexTree二维AC自动机 indexTree&#xff08;树状数组&#xff09; 给定数组下标统一从1开始 如果要求L。。R范围上任意区间的和&#xff0c;我们通常的解法是定义一个help&…

msvcp140.dll重新安装的解决方法,msvcp140.dll丢失修复教程

计算提示msvcp140.dll丢失需要怎么重新安装呢&#xff1f;下面小编就把msvcp140.dll丢失重新安装的修复教程分享给大家。msvcp140.dll是Microsoft Visual C Redistributable文件的一部分&#xff0c;它是一个动态链接库文件。该文件包含了一些用于C程序开发的函数和类的定义&am…

【Vue2.0源码学习】模板编译篇-模板解析阶段(HTML解析器)

文章目录 1. 前言2. HTML解析器内部运行流程3. 如何解析不同的内容3.1 解析HTML注释3.2 解析条件注释3.3 解析DOCTYPE3.4 解析开始标签3.5 解析结束标签3.6 解析文本 4. 如何保证AST节点层级关系5. 回归源码5.1 HTML解析器源码5.2 parseEndTag函数源码 6. 总结 1. 前言 上篇文…

如何应对ChatGPT这一波AI浪潮

最近我在写一系列文章&#xff0c;其中包括《ChatGPT 实战系列》和《WPS Office AI实战系列》。想通过这些文章提供实践指导&#xff0c;既自己动手实践了&#xff0c;也能与大家分享我的实践结果&#xff0c;这是一个学习的过程。在实践过程中&#xff0c;我发现有些实用的方面…

基于springboot文学创作的社交论坛新闻文章系统vue

相比于传统的社交论坛管理方式&#xff0c;智能化的管理方式可以大幅提高社交论坛的管理效率&#xff0c;实现了社交论坛管理的标准化、制度化、程序化的管理&#xff0c;有效地防止了社交论坛信息的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、准…

OnlyHome三代金属智能手环|健康、科技齐实现

近年来,人们越来越追求生活的品质与趣味,生活中的一点点小确幸、小惊喜最能让人感受到深深地愉悦。这不,Only&Home三代金属智能手环也带来了惊喜,有了它,健康、科技两手抓,享受生活更自由。 Only&Home三代金属智能手环给人的第一印象是它超高的颜值,延用了二代手环奢华…

Proton 推出开源密码管理器,兼身份管理器

导读Proton 是由来自欧洲核研究组织 (CERN) 的科学家于 2014 年在瑞士日内瓦创立的一家公司&#xff0c;其最知名的应该就是电子邮件服务 Proton Mail&#xff0c;主打端到端加密、安全和隐私保护。Proton 由科学家领导&#xff0c;其中包括万维网的发明者 Tim Berners-Lee。 …

高速入门知识02:降低串扰和维持信号完整性的布线方法

文章目录 前言一、单端走线布线1.1.带有短截线的菊花链布线1.2.没有短截线的菊花链布线1.3.星型布线1.4.蛇型布线 二、差分走线布线 前言 串扰是并行走线间不需要的信号耦合。微带线和带状线正确的布线和叠层布局能够降低串扰。 双带线布局有两个靠近的信号层&#xff0c;为降…

MQ的优劣势及RabbitMQ相关概念

一&#xff0c;MQ 1&#xff0c;MQ 的概念 MQ 全称 Message Queue&#xff08;消息队列&#xff09;&#xff0c;是用来存储消息数据的容器&#xff08;是一个中间件&#xff09;&#xff0c;一般用于分布式系统间的通信&#xff1b;MQ主要介于生产者和消费者之间&#xff0c…

lwip-2.1.3自带的httpd网页服务器使用教程(一)从SD卡读取网页文件并显示

概述 本教程使用的单片机是STM32F103ZE&#xff0c;有线网口芯片为ENC28J60。 本教程里面的网页由于需要兼容Windows XP系统的IE8浏览器&#xff0c;所以采用HTML 4.01编写&#xff0c;不使用任何前端框架。笔者使用的网页设计软件是Adobe Dreamweaver CS3。 开发板PCB文件是公…

推荐Selenium 自动化测试实战

你将获得 深入 Selenium 源码、原理、封装、技巧&#xff1b; unittest、pytest、DDT、POM 迭代测试方法&#xff1b; 大型项目分布式测试解决方案&#xff1b; Jenkins 持续集成和交付。 演示地址&#xff1a;www.runruncode.com/portal/article/index/id/19451/cid/85.html 课…

【无线通信专题】NFC基本原理

NFC定义 NFC(Near Field Communication)近场通信。 NFC早期应用 NFC最开始的应用主要用于金融领域,POS机(reader)通过非接触的方式与银行卡(带NFC接口的卡片)进行交互得到银行卡信息并完成支付。因为NFC的通信距离比较近,所以安全性较高。 后来随着手机支付的流行。…