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

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

  • 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_locationcv2.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.mzph.cn/news/204680.shtml

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

相关文章

万界星空科技MES---制造企业的加工生产模式

在现代制造业中,加工生产模式是制造企业组织和管理生产过程的重要方面。不同的加工模式适用于不同的生产需求和产品类型。其中流水型、离散型和混合型是三种常见的加工生产模式。1. 流水型加工模式 流水型加工模式是一种高度自动化的生产方式,适用于…

Docker部署开源分布式任务调度系统DolphinScheduler与远程访问办公

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

什么是封箱打包一体机

自动封箱打包机是什么?有哪些特点? 自动封箱打包机的介绍 自动封箱打包机是一种集自动封箱及捆扎为一体的包装机,可配套自动化包装流水线使用,自动上下封胶带、多道捆扎,实现后道无人化包装。工作效率高&#xff0c…

深入了解Java 8日期时间新玩法之Year、YearMonth、MonthDay、DayOfWeek

推荐语 在这篇文章中,我们将深入探讨Java 8中Year、YearMonth、MonthDay和DayOfWeek类的功能和使用方法。这些类是在Java 8中引入的新的日期时间API的一部分,它们为我们提供了更灵活、更易用的日期和时间处理能力。 尽管这些类在Java 8中已经出现&…

分享一个基础面试题---手写call

分享一个基础面试题---手写call 手写call笔记第一步第二步第三步 手写call笔记 call():在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法。 let foo {value:1 }; function bar(){console.log(this.value); } bar.call(foo);//1注意两点&…

Android音量调节参考一

基于android 9平台分析。 在Android系统中,默认的设备(phone等)音量都是分开控制的,这些包括媒体、铃声、闹铃、蓝牙、通话通过音频流来区别不同的音量类型。每种流类型都定义最大音量、最小音量及默认音量,Android 9定了了11中音频流类型&am…

点评项目——商户查询缓存

2023.12.7 redis实现商户查询缓存 在企业开发中,用户的访问量动辄成百上千万,如果没有缓存机制,数据库将承受很大的压力。本章我们使用redis来实现商户查询缓存。 原来的操作是根据商铺id直接从数据库查询商铺信息,为了防止频繁地…

python中时间戳与时间字符的相互转换

1.获取时间的方法 使用的是time模块 import time time1 time.time() # time1: 1701934920.676534 timestruct time.localtime(time1) # timestruct: time.struct_time(tm_year2023, tm_mon12, tm_mday7, tm_hour15, tm_min42, tm_sec0, tm_wday3, tm_yday341, tm_isdst0)2.…

Apache Hive(部署+SQL+FineBI构建展示)

Hive架构 Hive部署 VMware虚拟机部署 一、在node1节点安装mysql数据库 二、配置Hadoop 三、下载 解压Hive 四、提供mysql Driver驱动 五、配置Hive 六、初始化元数据库 七、启动Hive(Hadoop用户) chown -R hadoop:hadoop apache-hive-3.1.3-bin hive 阿里云部…

【STM32单片机】简易电子琴设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用数码管模块、矩阵按键、无源蜂鸣器等。 主要功能: 系统运行后,蜂鸣器播放一首音乐,进入电子琴模式,…

无公网IP环境Windows系统使用VNC远程连接Deepin桌面

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

MySQL Connector/J 数据库连接 URL的语法

详情请参考:https://dev.mysql.com/doc/connector-j/en/connector-j-reference-jdbc-url-format.html jdbc:mysql:是用于普通的、基本的故障转移连接使用: jdbc:mysql://[host][,failoverhost...][:port]/[database][?propertyName1][propertyValue1]…

联想范建平:联想混合AI架构具备两大明显优势

12月7日,首届AI PC创新论坛在北京联想集团总部举办。联想集团副总裁、联想研究院人工智能实验室负责人范建平表示,为提供真正可信、个性化的AI专属服务,联想提出了混合智能(Hybrid AI)概念,并已经显现出更强…

thinkphp 多表连接 子查询 group by 分组以最新的一条数据为组

用这个 $subQuery Db::name(wms_orderitems)->distinct(true)->field(kw_id,orders_id,product_id)->order(items_id desc)->buildSql();$list Db::name(wms_orders)->alias(order)->join($subQuery. item,item.orders_idorder.orders_id)->field(order…

【AntDB 数据库】国产分布式数据库发展趋势与难点

引言: 日前,为更好地满足亚信科技客户对于数据管理的需求,提高通用型数据库的产品服务能力与业务拓展能力,亚信科技分布式数据库AntDB发布V7.0版本产品,助力运营商核心系统实现全方位的自主可控与业务系统的平稳上线。…

搭建部署Hadoop2.x和3.x的区别

文章目录 2.x 和 3.x 的区别Java最小支持版本常用的端口号配置文件Classpath隔离NodeManager重连 进入官网自行查阅 2.x 和 3.x 的区别 Java最小支持版本 Hadoop 2.x:2.7 版本需要 Java 7,2.6 以及更早期版本支持 Java 6Hadoop 3.x:最低要求…

配置BFD状态与接口状态联动示例

BFD简介 定义 双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。 目的 为了减小设备故障对业务的影响,提高网络的可靠性,网…

深度学习实战65-人脸检测模型LFFD的搭建,LFFD模型的架构与原理的详细介绍

大家好,我是微学AI,今天给大家介绍一下深度学习实战65-人脸检测模型LFFD的搭建,LFFD模型的架构与原理的详细介绍。LFFD(Light and Fast Face Detector)模型是一种用于人脸检测的深度学习模型,其设计旨在实现轻量级和快速的人脸检测。本文将详细介绍LFFD模型的定义、优点、原…

【Linux】进程见通信之匿名管道pipe

1.匿名管道的特点 以下管道的统称仅代表匿名管道。 管道是一个只能单向通信的通信信道。为了实现进程间通信.管道是面向字节流的。仅限于父子通信或者具有血缘关系的进程进行进程见通信。管道自带同步机制,原子性写入。管道的生命周期是随进程的。 2.匿名管道通信…

SpringSecurity(五)

深入理解HttpSecurity的设计 一、HttpSecurity的应用 在前章节的介绍中我们讲解了基于配置文件的使用方式,也就是如下的使用。 也就是在配置文件中通过 security:http 等标签来定义了认证需要的相关信息,但是在SpringBoot项目中,我们慢慢脱离…