【智能家居】六、摄像头安装实现监控功能点、人脸识别(face_recognition的使用)

news2024/11/25 13:29:47

一、定义及第三方库的说明

  • OCR (光学字符识别)文字识别、图像识别
  • mjpg-streamer实时流式传输视频工具
  • 树莓派mjpg-streamer

Face Recognition人脸识别

  • Dlib 计算机视觉问题的工具和算法
  • face_recognition库
  • OpenCV 计算机视觉和机器学习的开源库

三、香橙派USB摄像头测试
四、face_recognition 人脸识别库的安装和测试方法
五、face_recognition 的测试方法

一、定义及第三方库的说明

OCR (光学字符识别)文字识别、图像识别

OCR(光学字符识别)是一种通过计算机对图像或文档进行分析,将其中的文字转换为可编辑文本的技术。以下是使用 OCR 的一般步骤:

  1. 选择 OCR 工具:
    选择适合你需求的 OCR 工具或库。有一些开源和商业 OCR 工具可供选择,例如 Tesseract、OCRopus、Adobe Acrobat等。

  2. 安装 OCR 工具:
    根据你选择的 OCR 工具,安装相应的软件或库。以 Tesseract 为例,在 Ubuntu 上可以使用以下命令安装:

    sudo apt-get install tesseract-ocr
    
  3. 获取图像或文档:
    准备包含文本的图像或文档。这可以是扫描的文档、图片中的文字等。

  4. 使用 OCR 进行识别:
    使用选择的 OCR 工具对图像或文档进行识别。以 Tesseract 为例,你可以使用以下命令:

    tesseract image.png output.txt
    

    这将识别 image.png 中的文本,并将结果保存到 output.txt 文件中。

  5. 处理结果:
    处理 OCR 的结果。结果可能需要进一步的校正、格式化或其他处理,以满足你的需求。

注意,OCR 的准确性受到图像质量、文本清晰度、字体等因素的影响。在使用 OCR 时,通常需要进行一些预处理,如图像清晰度的调整、去除噪声等,以提高识别准确性。

每个 OCR 工具都有其独特的使用方式和参数,因此在使用时请查阅相应工具的文档以获取详细的指导。

mjpg-streamer实时流式传输视频工具

mjpg-streamer 是一个用于实时流式传输视频的开源工具,通常用于将 USB 摄像头或其他视频源的视频流嵌入到 Web 页面中。它能够生成 Motion-JPEG(MJPEG)流支持浏览器中的实时视频查看

以下是使用 mjpg-streamer 的基本步骤:

  1. 安装 mjpg-streamer:
    在 Ubuntu 或其他基于 Debian 的系统上,你可以使用以下命令安装 mjpg-streamer:

    sudo apt-get install mjpg-streamer
    

    请注意,mjpg-streamer 还有一些插件和依赖项,具体取决于你的使用场景。你可能需要根据项目的要求安装额外的插件。

  2. 启动 mjpg-streamer:
    使用以下命令启动 mjpg-streamer。注意,这只是一个基本的启动命令,你可能需要根据你的摄像头和使用情况进行调整:

    mjpg_streamer -i "input_uvc.so" -o "output_http.so -p 8080"
    

    这将使用摄像头作为输入,并在端口 8080 上启动 HTTP 服务器。

  3. 在浏览器中查看视频流:
    打开 Web 浏览器,并访问 http://localhost:8080(或你指定的端口)。你应该能够在浏览器中看到摄像头的实时视频流。

请注意,上述步骤是一个简单的示例,实际上你可能需要根据你的摄像头类型、分辨率、使用场景等调整命令参数。mjpg-streamer 提供了丰富的配置选项,你可以根据需要查看其文档进行详细配置。

树莓派mjpg-streamer

树莓派3B + Pi摄像头 + mjpg-streamer
这些命令用于在基于 Debian 的系统(例如 Ubuntu)上安装一些图像处理和开发所需的库和工具。让我们逐个解释这些命令:

  1. 安装 JPEG 支持库:

    sudo apt-get install libjpeg8-dev
    

    该命令安装 libjpeg8-dev 库,这是 JPEG 图像格式的支持库。

  2. 安装 ImageMagick:

    sudo apt-get install imagemagick
    

    ImageMagick 是一个用于处理图像的开源软件套件。该命令安装 ImageMagick 软件包。

  3. 安装 libv4l 开发库:

    sudo apt-get install libv4l-dev
    

    该命令安装 libv4l-dev,这是 Video4Linux(V4L)的开发库,用于支持视频设备的开发。

  4. 安装 CMake 编译工具:

    sudo apt-get install cmake
    

    该命令安装 CMake,这是一个跨平台的构建工具,用于配置、构建和测试项目。

请确保在执行这些命令之前,你的系统已连接到互联网,以便从软件仓库中下载这些软件包。如果你有特定的项目需要这些库,通常项目的文档或 README 文件会提供更详细的指导。

Face Recognition人脸识别

人脸识别在计算机科学领域中通常被称为 “Face Recognition”。人脸识别是一种通过计算机视觉技术识别和验证图像或视频中的人脸的方法。这一技术可以用于许多应用,包括身份验证、访问控制、安全监控、表情分析等。

在实际应用中,有多种开源和商业人脸识别库和框架可供选择,其中一些可能使用不同的术语或名称。例如,OpenCV(Open Source Computer Vision Library)是一个流行的计算机视觉库,它提供了用于人脸识别的功能,而 Dlib 是另一个强大的 C++ 库,也包括人脸识别的功能。

总的来说,“人脸识别” 是一个广泛接受的术语,用于描述通过计算机技术自动检测和识别人脸的过程

face_recognition的使用
  定位人脸,人脸识别,识别单张图片中人脸的关键点,识别人脸并使用方框标注,比较两个人脸是否属于一个人,识别未知图片中的人脸是谁,识别 USB 摄像头中的人脸,使用 Web 服务上传图片运行人脸识别,face_detection 命令测试示例

Dlib 计算机视觉问题的工具和算法

Dlib 是一个用 C++ 编写的跨平台机器学习工具包。它包含了用于解决多种机器学习和计算机视觉问题的工具和算法。Dlib 的主要特点和功能包括:

  1. 图像处理:
    Dlib 提供了一系列用于图像处理的工具和算法,包括图像过滤、形状检测、直方图等。

  2. 机器学习:
    Dlib 包含了支持向量机(SVM)、最小二乘回归(LSTMs)、深度学习等多种机器学习算法。它还包括一些预训练的模型,用于人脸检测、姿势估计等任务。

  3. 计算机视觉:
    Dlib 提供了用于计算机视觉任务的工具,包括人脸检测、特征点检测、人脸识别等。其人脸检测和人脸关键点检测的功能非常强大。

  4. 人脸识别和人脸特征:
    Dlib 的人脸识别模块是其最为著名的部分之一。它包括了用于人脸检测、人脸关键点检测、人脸识别和人脸特征提取的工具。

  5. 形状预测:
    Dlib 提供了一些工具和算法,用于形状预测和形状模型。

  6. 跨平台支持:
    Dlib 支持多个平台,包括 Windows、Linux、macOS。

  7. 开源:
    Dlib 是一个开源项目,其代码可在 GitHub 上获取,而且它有一个活跃的社区,支持和改进不断进行。

  8. 高性能:
    Dlib 的代码经过高度优化,注重性能,并且在多种计算机视觉任务中表现出色。

要使用 Dlib,你需要下载并编译 Dlib 库,然后在你的项目中引入相应的头文件和链接库。在 C++ 中,你可以使用 Dlib 提供的 API 来实现各种机器学习和计算机视觉任务。如果你使用的是 Python,Dlib 也提供了 Python 接口。

face_recognition库

face_recognition 库是基于 Dlib 的一个简化人脸识别任务的 Python 库。它封装了 Dlib 的人脸识别和特征点检测功能,提供了一个更简单易用的接口。以下是在 Python 中使用 face_recognition 和 Dlib 进行基本人脸识别的步骤:

  1. 安装 face_recognition 库:
    在终端中运行以下命令安装 face_recognition 库:

    pip install face_recognition
    

    这会自动安装 Dlib、NumPy 和 Click 等相关依赖。

  2. 编写人脸识别代码:
    创建一个 Python 文件,并编写使用 face_recognition 的代码。以下是一个简单的示例,用于在一张图片中识别人脸并在识别的人脸周围绘制矩形:

    import face_recognition
    import cv2
    
    # 加载图像
    image = face_recognition.load_image_file("path_to_your_image.jpg")
    
    # 查找图像中的所有人脸
    face_locations = face_recognition.face_locations(image)
    
    # 用 OpenCV 读取图像
    img = cv2.imread("path_to_your_image.jpg")
    
    # 在每个人脸周围绘制矩形
    for face_location in face_locations:
        top, right, bottom, left = face_location
        cv2.rectangle(img, (left, top), (right, bottom), (0, 255, 0), 2)
    
    # 显示结果图像
    cv2.imshow("Face Recognition", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    请确保将 "path_to_your_image.jpg" 替换为你实际使用的图像路径。

  3. 运行代码:
    保存上述代码到一个文件(例如,face_recognition_example.py)并在终端中运行:

    python face_recognition_example.py
    

    这将显示带有人脸矩形的图像。

请注意,face_recognition 提供了更高级的功能,如人脸识别、比较人脸特征等。你可以查阅 face_recognition 和 Dlib 的文档以获取更多详细信息和示例。

OpenCV 计算机视觉和机器学习的开源库

OpenCV(Open Source Computer Vision Library)是一个用于计算机视觉和机器学习的开源库。它提供了丰富的图像处理和计算机视觉算法,涵盖了从简单的图像处理任务到复杂的计算机视觉问题的各个方面。以下是 OpenCV 库的一些主要特征和功能:

  1. 图像处理:
    OpenCV 提供了许多用于图像处理的函数和算法,包括图像过滤、边缘检测、直方图均衡化、图像变换等。

  2. 计算机视觉:
    OpenCV 包含了一系列计算机视觉算法,例如目标检测、人脸识别、特征匹配、物体跟踪等。它支持多种计算机视觉任务,并提供了已经训练好的模型。

  3. 机器学习:
    OpenCV 集成了一些机器学习算法,包括支持向量机(SVM)、k-最近邻(KNN)、决策树等。这些算法可用于分类、回归和聚类等任务。

  4. 摄像机标定和几何变换:
    OpenCV 包括用于摄像机标定、图像矫正和几何变换的工具。这对于计算机视觉中的相机几何学和三维重建任务非常重要。

  5. 图像和视频的 I/O:
    OpenCV 提供了用于读取和写入图像和视频的函数,支持多种格式。

  6. 实时计算:
    OpenCV 能够处理实时视频流,因此适用于需要实时处理的应用,如实时物体检测和跟踪。

  7. 跨平台支持:
    OpenCV 支持 Windows、Linux、macOS 等多个平台,使得它成为一个跨平台的计算机视觉库。

  8. 开源和活跃的社区:
    OpenCV 是一个开源项目,拥有庞大的用户和开发者社区。它经常更新和改进,且有丰富的文档和教程。

要使用 OpenCV,你需要安装 OpenCV 库并使用相应的编程语言(如 C++、Python)来调用其函数。可以根据你的需求选择相应的版本和安装方法。

安装 编写 编译 运行

在 OpenCV 中,人脸识别功能由 cv::CascadeClassifier 类来实现,通常使用 Haar 特征分类器来进行人脸检测。以下是使用 OpenCV 进行简单人脸识别的基本步骤:

  1. 安装 OpenCV:
    如果你还没有安装 OpenCV,可以使用以下命令在 Ubuntu 上进行安装:

    sudo apt-get install libopencv-dev
    

    在其他平台上,你可以根据 OpenCV 的官方文档进行安装:OpenCV Installation Guide

  2. 编写人脸识别代码:
    创建一个 C++ 或 Python 文件,并使用 OpenCV 的 CascadeClassifier 类加载人脸识别器模型。以下是一个简单的 Python 示例:

    import cv2
    
    # 加载人脸识别器模型
    face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
    
    # 读取输入图像
    img = cv2.imread('path_to_your_image.jpg')
    
    # 将图像转换为灰度
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # 在图像上检测人脸
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
    
    # 在检测到的人脸周围绘制矩形
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
    
    # 显示结果图像
    cv2.imshow('Face Recognition', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    请注意,此示例假定你已经有一张图像(path_to_your_image.jpg)用于人脸识别。

  3. 运行代码:
    保存上述代码到一个文件(例如,face_recognition.py)并在终端中运行:

    python face_recognition.py
    

    或者如果是 C++ 代码,需要先编译:

    g++ -o face_recognition face_recognition.cpp `pkg-config --cflags --libs opencv`
    ./face_recognition
    

    这将加载人脸识别器模型,并在图像上检测和标记人脸。

请记得替换示例中的图像路径为你实际使用的图像路径。此外,OpenCV 还提供其他人脸识别的方法,例如基于深度学习的方法,你可以根据项目的需要进行更进一步的研究。

三、香橙派USB摄像头测试

(1) 首先将 USB 摄像头插入到 Orange Pi 开发板的 USB 接口中
(2) 然后通过 lsmod 命令可以看到内核自动加载了下面的模块
在这里插入图片描述
(3) 通过 v4l2-ctl 命令可以看到 USB 摄像头的设备节点信息为 /dev/video0

orangepi@orangepi:~$ sudo apt update 
orangepi@orangepi:~$ sudo apt install -y v4l-utils 
orangepi@orangepi:~$ v4l2-ctl --list-devices

在这里插入图片描述

注意: v4l2 中的 l 是小写字母 l ,不是数字 1 。
另外 video 的序号不一定都是 video0 ,请以实际看到的为准。

(4) 使用 mjpg-streamer 测试 USB 摄像头
a. 下载 mjpg-streamer
 a) Github 的下载地址:

git clone https://github.com/jacksonliam/mjpg-streamer

 b) Gitee 的镜像下载地址为:

git clone https://gitee.com/leeboby/mjpg-streamer

b. 安装依赖的软件包
 a) Ubuntu 系统

orangepi@orangepi:~$ sudo apt-get install -y cmake libjpeg8-dev

 b) Debian 系统

orangepi@orangepi:~$ sudo apt-get install -y cmake libjpeg62-turbo-dev

c. 编译安装 mjpg-streamer

orangepi@orangepi:~$ cd mjpg-streamer/mjpg-streamer-experimental
orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ make -j4
orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ sudo make install

d. 然后输入下面的命令启动 mjpg_streamer

注意, video 的序号不一定都是 video0 ,请以实际看到的为准。

orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ export LD_LIBRARY_PATH=.
orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$sudo ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -u -f 30" -o "./output_http.so -w ./www"

vi start.sh
在这里插入图片描述
e. 然后在和开发板同一局域网的 Ubuntu PC 或者 Windows PC 或者手机的浏览器中输入【开发板的 IP 地址 :8080 】就能看到摄像头输出的视频了
在这里插入图片描述
f. 推荐使用 mjpg-streamer 来测试 USB 摄像头,比 motion 流畅很多,使用 mjpg-streamer 感觉不到任何卡顿

四、face_recognition 人脸识别库的安装和测试方法

注意,此小节的内容都是在 桌面版本 的 Linux 系统中测试的,所以请确保开发 板使用的系统为桌面版本的系统。
另外下面的安装测试都是在 orangepi 用户下进行的,请保持环境一致。

face_recognition 源码仓库的地址为:

https://github.com/ageitgey/face_recognition

face_recognition 中文版本的说明文档为:

https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chinese.md

使用脚本自动安装 face_recognition 的方法

(1) 首先在桌面中打开一个终端,然后下载 face_recognition_install.sh

orangepi@orangepi:~/Desktop$ wget https://gitee.com/leeboby/face_recognition_install/raw/master/face_recognition_install.sh

在这里插入图片描述
(2) 然后执行下面的命令开始安装 face_recognition

orangepi@orangepi:~/Desktop$ bash face_recognition_install.sh

(3) face_recognition 安装完后会自动下载 face_recognition 的源码,然后自动运行face_recognition 中的一些示例,如果最后能看到桌面上弹出了下面的这些图片就说明 face_recognition 安装测试成功了
在这里插入图片描述
手动安装 face_recognition 的方法参考用户手册

五、face_recognition 的测试方法

注意,下面的操作都是在桌面中演示的,所以首先请连接好 HDMI 显示器,或者使用 NoMachine/VNC 远程登录 Linux 桌面来测试。

(1) 在 face_recognition 的源码中有一些示例代码,我们可以直接用来测试,face_recognition 源码的下载地址如下所示:
 a. GitHub 官方的下载地址

orangepi@orangepi:~$ git clone https://github.com/ageitgey/face_recognition.git

 b. Gitee 镜像下载地址

orangepi@orangepi:~$ git clone https://gitee.com/leeboby/face_recognition.git

(2) face_recognition 示例代码的路径如下所示

face_recognition/examples

(3) face_recognition 的中文说明文档链接如下所示,使用 face_recognition 前请仔细阅读下

https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chinese.md

(4) find_faces_in_picture.py 用来在图片中定位人脸的位置,测试步骤如下所示
 a. 在桌面中打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令

orangepi@orangepi:~$ cd face_recognition/examples
orangepi@orangepi:~/face_recognition/examples$ python3 find_faces_in_picture.py
I found 1 face(s) in this photograph.
A face is located at pixel location Top: 241, Left: 419, Bottom: 562, Right: 740

 b. 等待一段时间会弹出下面的图片,这就是在测试图片中定位到的人脸
在这里插入图片描述
(5) find_facial_features_in_picture.py 用来识别单张图片中人脸的关键点,测试步骤如下所示
 a. 在桌面中打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令

orangepi@orangepi:~$ cd face_recognition/examples
orangepi@orangepi:~/face_recognition/examples$ python3  find_facial_features_in_picture.py

 b. 等待一段时间会弹出下面的图片,可以看到将人脸轮廓都标注出来了
在这里插入图片描述
(6) identify_and_draw_boxes_on_faces.py 用来识别人脸并使用方框标注,测试步骤如下所示
 a. 在桌面中打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令

orangepi@orangepi:~$ cd face_recognition/examples
orangepi@orangepi:~/face_recognition/examples$ python3  identify_and_draw_boxes_on_faces.py

 b. 等待一段时间会弹出下面的图片,可以看到将图片中的人脸都使用方框标注出来了,并且正确显示了人物的名字
在这里插入图片描述
(7) face_distance.py 用来在不同精度上比较两个人脸是否属于一个人,首先打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令就可以看到测试的输出结果

orangepi@orangepi:~$ cd face_recognition/examples
orangepi@orangepi:~/face_recognition/examples$ python3 face_distance.py
The test image has a distance of 0.35 from known image #0
- With a normal cutoff of 0.6, would the test image match the known image? True
- With a very strict cutoff of 0.5, would the test image match the known image? True
The test image has a distance of 0.82 from known image #1
- With a normal cutoff of 0.6, would the test image match the known image? False
- With a very strict cutoff of 0.5, would the test image match the known image?
        False

(8) recognize_faces_in_pictures.py 用来识别未知图片中的人脸是谁。首先打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令,等待一端时间后就能看到测试结果

orangepi@orangepi:~$ cd face_recognition/examples
orangepi@orangepi:~/face_recognition/examples$ python3 recognize_faces_in_pictures.py
Is the unknown face a picture of Biden? False
Is the unknown face a picture of Obama? True
Is the unknown face a new person that we've never

(9) facerec_from_webcam_faster.py 用来识别 USB 摄像头中的人脸,测试步骤如下所示:
 a. 首先请将 USB 摄像头插入开发板的 USB 接口中,然后通过 v4l2-ctl注意 v4l2 中的 l 是小写字母 l ,不是数字 1 )命令查看下 USB 摄像头的设备节点的序号
 b. 然后在桌面中打开一个终端,进入 face_recognition/examples 目录后,首先修改下 facerec_from_webcam_faster.py 中使用的摄像头的设备序号。比如上面通过 v4l2-ctl --list-devices 命令查看到 USB 摄像头为 /dev/video1 ,那就修改 cv2.VideoCapture(0) 中的 0 为 1

 c. 然后执行下面的命令运行 facerec_from_webcam_faster.py

orangepi@orangepi:~/face_recognition/examples$ python3 facerec_from_webcam_faster.py

 d. 等待一段时间会弹出摄像头的显示画面
 e. 此时可以将摄像头对准自己,当摄像头检测到人脸时,会将检测到的人脸使用方框框起来。注意,检测人脸时,摄像头显示的画面会比较卡顿,请不要移动过快
  f. 还可以打开一张奥巴马的图片,然后使用摄像头对准打开的图片,可以看到不仅能将人脸标注出来,还能正确显示检测到的人脸的名字。注意,检测人脸时,摄像头显示的画面会比较卡顿,请不要移动过快
在这里插入图片描述
(10) web_service_example.py 是一个非常简单的使用 Web 服务上传图片运行人脸识别的案例,后端服务器会识别这张图片是不是奥巴马,并把识别结果以 json 键值对输出,测试步骤如下所示:
 a. 在桌面中打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令( 如果是使用脚本自动安装的 face_recognition ,那么就不需要 安装 flask 了

orangepi@orangepi:~$ python3 -m pip install flask
orangepi@orangepi:~$ cd face_recognition/examples
root@orangepi:~/face_recognition/examples$ python3 web_service_example.py
* Serving Flask app 'web_service_example' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: on
* Running on all addresses (0.0.0.0)
WARNING: This is a development server. Do not use it in a production deployment. * Running on http://127.0.0.1:5001
* Running on http://192.168.1.79:5001 (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 500-161-390

 b. 然后运行下面的命令就可以返回图片识别的结果(注意,下面的命令执行路径为 face_recognition/examples

orangepi@orangepi:~/face_recognition/examples$ curl -XPOST -F "file=@obama2.jpg" http://127.0.0.1:5001
{
	"face_found_in_image": true,
	"is_picture_of_obama": true
}

 c. 我们也可以将 face_recognition/examples/obama2.jpg 这张图片拷贝到其他的 Linux 电脑中,当然也可以自己准备一张名为 obama2.jpg 的图片,然后在 Linux 电脑中可以使用下面的命令远程通过开发板运行的服务来识别人脸(注意命令中的 IP 地址需要替换为开发板的 IP 地址, file 后的文件名需 要替换为想要测试的图片的名字

test@test:~$ curl -XPOST -F "file=@obama2.jpg" http://192.168.1.79:5001
{ 
	"face_found_in_image": true, 
	"is_picture_of_obama": true
}

 d. 使用浏览器测试的方法如下所示:
  (a) 首先打开浏览器,然后在浏览器的地址栏输入开发板的 IP 地址 :5001 ,然后就能看到下面的页面
在这里插入图片描述
  (b) 然后将 obama2.jpg 复制到桌面

orangepi@orangepi:~/face_recognition/examples$ cp obama2.jpg /home/orangepi/Desktop/

  ( c) 然后在浏览器中选择刚才复制的图片
在这里插入图片描述
  (d) 然后点击 Upload 上传刚才选择的图片进行人脸识别
在这里插入图片描述
  (e) 等待一段时间后就会显示检测的结果
在这里插入图片描述
(11) face_detection 命令测试示例
  详情请看用户手册

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

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

相关文章

Jsoup爬取HTTPS页面数据资源,并导入数据库(Java)

一、实现思路 示例页面: 2020年12月中华人民共和国县以上行政区划代码 忽略https请求的SSL证书通过Jsoup获取页面标签遍历行标签,分别获取每个行标签的第二个和第三个列标签将获取到的行政代码和单位名称分别插入sql语句占位符执行sql语句&#xff0c…

【网络编程】-- 01 概述、IP

网络编程 1 概述 1.1 计算机网络 (连接分散计算机设备以实现信息传递的系统) 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下&…

图的存储(邻接矩阵,边集数组,邻接表,链式前向星)

目录 🌼图的存储 (1)邻接矩阵 (2)边集数组 (3)邻接表 (4)链式前向星 😀刷题 🐍最大节点 🐍有向图 D 和 E 🐍奶牛…

3 文本分类入门finetune:bert-base-chinese

项目实战: 数据准备工作 bert-base-chinese 是一种预训练的语言模型,基于 BERT(Bidirectional Encoder Representations from Transformers)架构,专门用于中文自然语言处理任务。BERT 是由 Google 在 2018 年提出的一…

Leetcode—1466.重新规划路线【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—1466.重新规划路线 算法思想 实现代码 class Solution { public:int minReorder(int n, vector<vector<int>>& connections) {vector<pair<int, int>> g[n];for(auto e: connections) {in…

“掌握高效视频分割技巧,降低误差,提高精度“

如果你是一名视频编辑爱好者或者专业人士&#xff0c;那么你一定会在视频剪辑的过程中遇到各种挑战。其中&#xff0c;如何准确高效地进行视频分割是一个至关重要的问题。现在&#xff0c;我们将向你展示一种全新的解决方案&#xff0c;帮助你轻松解决这些问题。 首先第一步&a…

Vue使用百度地图以及实现轨迹回放 附完整代码

百度地图开放平台 https://lbs.baidu.com/index.php?title%E9%A6%96%E9%A1%B5 javaScript API https://lbs.baidu.com/index.php?titlejspopularGL 百度地图实例 https://lbsyun.baidu.com/index.php?titleopen/jsdemoVue Baidu Map文档 https://dafrok.github.io/vue-baidu…

数据结构与算法:红黑树

目录 什么是红黑树 ​编辑 红黑树的性质 红黑树的辨析 红黑树实现 红黑树的结构 红黑树的插入 红黑树的调试 红黑树平衡判断 什么是红黑树 这里引入一下NIL节点的概念&#xff1a; NIL节点也称为空节点或外部节点&#xff0c;是红黑树中一种特殊的节点类型。NIL节点不…

DeepIn,UOS统信专业版安装运行Java,JavaFx程序

因为要适配国产统信UOS系统&#xff0c;要求JavaFx程序能简便双击运行&#xff0c;由于网上UOS开发相关文章少&#xff0c;多数文章没用&#xff0c;因此花了不少时间&#xff0c;踩了不少坑&#xff0c;下面记录一些遇到的问题&#xff0c;我的程序环境是jdk1.8&#xff0c;为…

应用程序中实现用户隐私合规和数据保护合规的处理方案及建议

随着移动互联网的发展&#xff0c;用户隐私合规和数据保护合规已经成为应用开发过程中不可忽视的重要环节。为了帮助开发者实现隐私和数据保护合规&#xff0c;本文将介绍一些处理方案和建议。 图片来源&#xff1a;应用程序中实现用户隐私合规和数据保护合规的处理方案及建议 …

720度vr虚拟家居展厅提升客户的参观兴致

VR虚拟展厅线上3D交互展示的优势有以下几点&#xff1a; 打破了场馆的展示限制&#xff0c;可展示危险性制品、珍贵稀有物品、超大型设备等&#xff0c;同时提供了更大的展示空间和更丰富的展示内容。 可提供企业真实环境的实时VR全景参观&#xff0c;提升潜在客户信任度。 提供…

【附源码】完整版,Python+Selenium+Pytest+POM自动化测试框架封装

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、测试框架简介 …

【S2ST】Direct Speech-to-Speech Translation With Discrete Units

【S2ST】Direct Speech-to-Speech Translation With Discrete Units AbstractIntroductionRelated workModelSpeech-to-unit translation (S2UT) modelMultitask learningUnit-based vocoder ExperimentsDataSystem setupBaselineASRMTTTSS2TTransformer Translatotron Evaluat…

【广州华锐互动】VR沉浸式体验铝厂安全事故让伤害教育更加深刻

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为我们的生活带来了前所未有的便捷和体验。在安全生产领域&#xff0c;VR技术的应用也日益受到重视。 VR公司广州华锐互动就开发了多款VR安全事故体验系统&#xff0c…

大数据技术2:大数据处理流程

前言&#xff1a;下图是一个简化的大数据处理流程图&#xff0c;大数据处理的主要流程包括数据收集、数据存储、数据处理、数据应用等主要环节。 1.1 数据收集 大数据处理的第一步是数据的收集。现在的中大型项目通常采用微服务架构进行分布式部署&#xff0c;所以数据的采集需…

如何使用Docker本地搭建开源CMF Drupal并结合内网穿透公网访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS&#xff0c;适用于各种不同的网站项目&#xff0c;从小型个人博客到大型企业级门户网站。它的学习…

【目标检测算法】IOU、GIOU、DIOU、CIOU

目录 参考链接 前言 IOU(Intersection over Union) 优点 缺点 代码 存在的问题 GIOU(Generalized Intersection over Union) 来源 GIOU公式 实现代码 存在的问题 DIoU(Distance-IoU) 来源 DIOU公式 优点 实现代码 总结 参考链接 IoU系列&#xff08;IoU, GIoU…

Java程序员,你掌握了多线程吗?(文末送书)

目录 01、多线程对于Java的意义02、为什么Java工程师必须掌握多线程03、Java多线程使用方式04、如何学好Java多线程送书规则 摘要&#xff1a;互联网的每一个角落&#xff0c;无论是大型电商平台的秒杀活动&#xff0c;社交平台的实时消息推送&#xff0c;还是在线视频平台的流…

Java API接口强势对接:构建高效稳定的系统集成方案

文章目录 1. Java API接口简介2. Java API接口的优势2.1 高度可移植性2.2 强大的网络通信能力2.3 多样化的数据处理能力 3. 实战&#xff1a;Java API接口强势对接示例3.1 场景描述3.2 用户管理系统3.3 订单处理系统3.4 系统集成 4. 拓展&#xff1a;Java API接口在微服务架构中…