【OpenCV-PyQt5-PyGame-imutils】探索Python中的图像和视频捕获:性能分析与选择指南

前言

随着计算机视觉和多媒体应用的不断发展,图像和视频捕获变得越来越重要。在Python中,有多种库和工具可供选择,用于打开摄像头、捕获图像、以及处理视频流。本文旨在为读者提供对这些捕获方法的全面了解,并介绍如何计算平均帧率以评估性能。

文章目录

  • 前言
  • 环境配置
    • 新的空白解释器环境创建
      • Windows
      • Linux
      • 相关库配置
  • Python中的视频流处理:不同库和工具的使用
    • 1. OpenCV
    • 2. Pillow
    • 3. Pygame
    • 4. PyQt
    • 5. imutils
    • 6. av
    • 7. SimpleCV
  • 测试函数,捕捉100帧并返回平均帧率
    • python3
      • 可处理摄像头或视频帧
        • 1. OpenCV Frame Capture
        • 2. Pygame Frame Capture
        • 3. PyQt Frame Capture
        • 4. imutils Frame Capture
      • 分析和总结:
      • 捕获屏幕帧
        • 1. pyautogui Frame Capture
      • 音频和视频捕捉
        • 2. av Frame Capture
    • python 2
      • SimpleCV Frame Capture
  • 总结

环境配置

新的空白解释器环境创建

解释器环境创建方式基于
半自动化使用.bat手动打包迁移python项目

Windows

python -m venv venv
call venv\Scripts\activate.bat
python -m pip install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pip setuptools

注:以下报错是由于你在powershell输入了以上命令,你需要切换成cmd,直接输入cmd即可

PS E:\PRODUCE\dli\recognition-dlib\RetinaFace-FaceNet> call
venv\Scripts\activate.bat call : 无法将“call”项识别为
cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1

  • call venv\Scripts\activate.bat
  •   + CategoryInfo          : ObjectNotFound: (call:String) [], CommandNotFoundException+ FullyQualifiedErrorId : CommandNotFoundException
    

Linux

python -m venv venv 
source venv/bin/activate
python -m pip install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pip setuptools
  • 你也可以使用conda管理你的 Python 环境,但是我实际使用时的体验来看,以上方法当你的电脑已经安装了任意版本的python,打开cmd即可使用,且比conda安装新的包更快,速度与直接pip install在系统解释器中几乎一致
  • 若使用conda,你必须先下载conda,但是conda可以很好的处理各种包不匹配的问题,也可以下载到的很多pip找不到的特殊版本

以上两种方法就对应PyCharm中的这两种方法
在这里插入图片描述

相关库配置

1. OpenCV

pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-python==4.5.3.56

2. Pygame

pip install -i https://mirrors.aliyun.com/pypi/simple/ Pygame

3. pyqt5

pip install -i https://mirrors.aliyun.com/pypi/simple/ pyqt5 pyqt5-sip pyqt5-tools

建议三个库相关库一起装不然可能会报错

This application failed to start because no Qt platform plugin could be
initialized.Reinstalling the application may fix this problem.

在这里插入图片描述

4. imutils

pip install -i https://mirrors.aliyun.com/pypi/simple/ imutils

5. pyautogui

pip install -i https://mirrors.aliyun.com/pypi/simple/ pyautogui

6. av

pip install -i https://mirrors.aliyun.com/pypi/simple/ av

7. SimpleCV
Python2库,python3已不支持

pip install -i https://mirrors.aliyun.com/pypi/simple/ SimpleCV

Python中的视频流处理:不同库和工具的使用

视频流处理在计算机视觉和多媒体应用中占据着重要地位。本文将介绍Python中的不同库和工具,用于摄像头捕捉、图像处理和视频流处理。我们将提供示例代码和描述,以帮助读者了解这些工具的使用方法。

1. OpenCV

OpenCV 是一个流行的计算机视觉库,可以用于摄像头捕捉和图像处理。以下是使用 OpenCV 打开摄像头并拍照的示例代码:

import cv2# 初始化摄像头
cap = cv2.VideoCapture(0)if not cap.isOpened():print("摄像头未找到或无法访问。")
else:while True:# 捕获一帧图像ret, frame = cap.read()cv2.imshow("Press Space to Capture", frame)key = cv2.waitKey(1)if key == 32:  # 按下空格键# 将图像保存为文件cv2.imwrite('captured_image.jpg', frame)print("拍照成功!图像已保存为captured_image.jpg")break# 释放摄像头cap.release()cv2.destroyAllWindows()

2. Pillow

Pillow 是一个强大的图像处理库,也可以用于摄像头捕捉。以下是使用 Pillow 打开摄像头并拍照的示例代码:

from PIL import Image
from io import BytesIO
import requests# 初始化摄像头
with Image.open(requests.get('http://localhost:8080/picture/1/current/', stream=True).raw) as camera:# 拍照camera.save("pillow_capture.jpg")

3. Pygame

Pygame 是一个游戏开发库,也可以用于摄像头捕捉。以下是使用 Pygame 打开摄像头并拍照的示例代码:

import pygame
import pygame.camera
from pygame.locals import *def main():pygame.init()pygame.camera.init()# 打开默认摄像头camera = pygame.camera.Camera(pygame.camera.list_cameras()[0])camera.start()# 设置窗口尺寸和标题screen = pygame.display.set_mode((640, 480))pygame.display.set_caption('Camera Feed')capturing = Falsewhile True:for event in pygame.event.get():if event.type == QUIT:camera.stop()pygame.quit()returnelif event.type == KEYDOWN and event.key == K_c:# 按 'C' 键来拍照image = camera.get_image()pygame.image.save(image, 'captured_image.png')capturing = Trueif not capturing:# 从摄像头获取图像并显示image = camera.get_image()screen.blit(image, (0, 0))pygame.display.update()else:# 显示拍摄的照片captured_image = pygame.image.load('captured_image.png')screen.blit(captured_image, (0, 0))pygame.display.update()if __name__ == "__main__":main()

4. PyQt

PyQt 是一个GUI库,它也提供了摄像头访问和图像捕捉功能。你可以使用 PyQt 的相机模块来实现这一功能。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton
from PyQt5.QtMultimedia import QCamera, QCameraInfo
from PyQt5.QtMultimediaWidgets import QCameraViewfinder
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QImageclass CameraApp(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('Camera App')self.setGeometry(100, 100, 640, 480)self.central_widget = QWidget(self)self.setCentralWidget(self.central_widget)self.layout = QVBoxLayout(self.central_widget)self.viewfinder = QCameraViewfinder(self)self.layout.addWidget(self.viewfinder)self.camera_info = QCameraInfo.defaultCamera()self.camera = QCamera(self.camera_info)self.camera.setViewfinder(self.viewfinder)self.camera.start()self.capture_button = QPushButton('拍照', self)self.layout.addWidget(self.capture_button)self.capture_button.clicked.connect(self.capture_image)def capture_image(self):image = self.viewfinder.grab()if not image.isNull():image.save('captured_image.png', 'PNG')def closeEvent(self, event):self.camera.stop()self.camera.unload()if __name__ == '__main__':app = QApplication(sys.argv)window = CameraApp()window.show()sys.exit(app.exec_())

5. imutils

imutils 是一个用于图像处理的工具集,它包括了一些用于打开摄像头并捕捉图像的函数。

from imutils.video import VideoStream
import cv2def main():vs = VideoStream(src=0).start()  # 打开默认摄像头frame_count = 0while True:frame = vs.read()  # 读取一帧图像# 显示图像cv2.imshow('Camera', frame)key = cv2.waitKey(1)if key == 32:  # 如果按下空格键,拍照# 保存图像cv2.imwrite(f'photo_{frame_count}.jpg', frame)frame_count += 1if key == 27:  # 如果按下ESC键,退出循环break# 释放摄像头和销毁窗口vs.stop()cv2.destroyAllWindows()if __name__ == "__main__":capture_frame_count = 0main()

6. av

av 是一个多媒体处理库,它支持音频和视频捕捉。虽然它主要用于音视频处理,但也可以用于摄像头捕捉。

import av
import numpy as np
from av.video import VideoFrame# 打开摄像头
container = av.open("R.mp4")# 获取视频流
stream = container.streams.video[0]# 读取图像帧
for frame in container.decode(stream):img = frame.to_image()img.save("av_capture.jpg")break  # 捕捉一帧后退出

7. SimpleCV

python2方法,python3不可用
SimpleCV 是一个计算机视觉库,内置了摄像头捕捉和图像处理工具。

from SimpleCV import Camera# 初始化摄像头
camera = Camera()# 拍照
image = camera.getImage()
image.save("simplecv_capture.jpg")

测试函数,捕捉100帧并返回平均帧率

平均帧率(Average Frame Rate)的计算方法是将总共捕获的帧数除以经过的时间,以得到每秒的帧数(FPS)。以下是具体的计算步骤:

  1. 记录一个起始时间 start_time,通常使用毫秒为单位。你可以使用类似 QTime.currentTime() 的方法来获取当前时间。

  2. 在每一帧捕获之后,递增一个帧数计数器 frame_count,用于跟踪已捕获的帧数。

  3. 当达到指定的帧数(例如100帧)时,停止捕获过程。

  4. 记录一个结束时间 end_time,通常也以毫秒为单位。

  5. 计算经过的时间,即结束时间减去起始时间,以毫秒为单位。这可以使用下面的方法计算:elapsed_time = end_time - start_time

  6. 将经过的时间转换为秒,因为帧率通常以每秒的帧数(FPS)表示。这可以通过将elapsed_time除以1000来实现,得到经过的时间(秒)。

  7. 计算帧率 frame_rate,将已捕获的帧数 frame_count除以经过的时间(秒)。帧率的计算公式为:frame_rate = frame_count / elapsed_time

  8. 最后,你可以将 frame_rate 打印出来,以表示捕获的平均帧率。

这个帧率表示了程序在捕获和显示帧的过程中的性能。通常,帧率越高,程序运行得越流畅。这个值对于评估图像处理应用程序的性能非常重要。

python3

可处理摄像头或视频帧

1. OpenCV Frame Capture

OpenCV 是一个流行的计算机视觉库,可以用于摄像头捕捉和图像处理。这个程序测试使用 OpenCV 打开摄像头并返回平均帧率。

import cv2
import timeitdef capture_and_display_opencv():cap = cv2.VideoCapture(0)frame_count = 0start_time = timeit.default_timer()while frame_count < 100:ret, frame = cap.read()frame_count += 1# 显示捕获的帧cv2.imshow("Camera Feed", frame)if cv2.waitKey(1) & 0xFF == 27:  # 按下 ESC 键退出breakcap.release()cv2.destroyAllWindows()end_time = timeit.default_timer()elapsed_time = end_time - start_timeframe_rate = frame_count / elapsed_timereturn frame_rateif __name__ == "__main__":frame_rate = capture_and_display_opencv()print("OpenCV Frame Rate:", frame_rate)

OpenCV Frame Rate: 23.629290831107372

此程序使用 OpenCV 打开摄像头,捕捉100帧并返回平均帧率。请将此代码保存为一个单独的Python文件并运行。

2. Pygame Frame Capture

Pygame 是一个游戏开发库,也可以用于摄像头捕捉。以下是测试使用 Pygame 打开摄像头并返回平均帧率的程序:

import pygame.camera
from pygame.locals import *
import timeit
import pygamedef capture_and_display_pygame():pygame.init()pygame.camera.init()camera = pygame.camera.Camera(pygame.camera.list_cameras()[0])camera.start()# 创建 Pygame 窗口用于显示摄像头画面screen = pygame.display.set_mode((640, 480))pygame.display.set_caption("Camera Feed")frame_count = 0start_time = timeit.default_timer()running = Truewhile running:for event in pygame.event.get():if event.type == QUIT:running = False# 捕获摄像头画面image = camera.get_image()# 将捕获的画面显示在 Pygame 窗口上screen.blit(image, (0, 0))pygame.display.flip()frame_count += 1if frame_count >= 100:running = Falseend_time = timeit.default_timer()elapsed_time = end_time - start_timeframe_rate = frame_count / elapsed_time# 关闭 Pygame 窗口pygame.quit()return frame_rateif __name__ == "__main__":frame_rate = capture_and_display_pygame()print("Pygame Frame Rate:", frame_rate)

此程序使用 Pygame 打开摄像头,捕捉100帧并返回平均帧率。请将此代码保存为一个单独的Python文件并运行。
Pygame Frame Rate: 28.42875197551398

3. PyQt Frame Capture

PyQt 是一个强大的GUI库,它包括了对摄像头的访问功能。以下是测试使用 PyQt 打开摄像头并返回平均帧率的程序:

import sys
from PyQt5.QtCore import Qt, QTimer, QTime
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from PyQt5.QtMultimedia import QCamera, QCameraInfo
from PyQt5.QtMultimediaWidgets import QCameraViewfinderclass CameraApp(QMainWindow):def __init__(self, capture_frame_count):super().__init__()self.capture_frame_count = capture_frame_countself.initUI()def initUI(self):self.setWindowTitle('Camera Feed')self.setGeometry(100, 100, 640, 480)self.central_widget = QWidget(self)self.setCentralWidget(self.central_widget)self.layout = QVBoxLayout(self.central_widget)self.viewfinder = QCameraViewfinder(self)self.layout.addWidget(self.viewfinder)self.camera_info = QCameraInfo.defaultCamera()self.camera = QCamera(self.camera_info)self.camera.setViewfinder(self.viewfinder)self.camera.start()self.frame_count = 0self.start_time = QTime.currentTime()self.timer = QTimer(self)self.timer.timeout.connect(self.capture_frame)self.timer.start(30)  # 30毫秒更新一次def capture_frame(self):if self.frame_count < self.capture_frame_count:self.frame_count += 1# 实时显示捕获的帧self.viewfinder.show()else:self.timer.stop()self.camera.stop()self.camera.unload()self.close()def closeEvent(self, event):elapsed_time = self.start_time.msecsTo(QTime.currentTime())frame_rate = self.frame_count / (elapsed_time / 1000)print("PyQt5 Frame Rate:", frame_rate)if __name__ == '__main__':app = QApplication(sys.argv)capture_frame_count = 100window = CameraApp(capture_frame_count)window.show()sys.exit(app.exec_())

PyQt5 Frame Rate: 26.32964718272775

此程序使用 PyQt 打开摄像头,捕捉100帧并返回平均帧率。请将此代码保存为一个单独的Python文件并运行。

接下来,我们将继续介绍使用 SimpleCV、imutils 和其他捕捉方法的程序。

4. imutils Frame Capture

使用 imutils 库可以方便地捕获视频帧,但要显示图像,您通常仍然需要使用 OpenCV 或其他类似的库。 imutils 用于帮助处理图像和视频帧的读取、处理和转换,但它本身不提供图像显示的功能。所以在捕获和实时显示视频帧时,通常需要结合使用 imutils 和 OpenCV。

import time
import timeit
import cv2
from imutils.video import VideoStreamdef capture_imutils(capture_frame_count):vs = VideoStream(src=0).start()  # 打开默认摄像头time.sleep(2.0)  # 等待摄像头预热frame_count = 0start_time = timeit.default_timer()while frame_count < capture_frame_count:frame = vs.read()cv2.imshow("Frame", frame)if cv2.waitKey(1) & 0xFF == 27:  # 按下 ESC 键退出breakframe_count += 1end_time = timeit.default_timer()vs.stop()cv2.destroyAllWindows()elapsed_time = end_time - start_timeframe_rate = frame_count / elapsed_timereturn frame_rateif __name__ == "__main__":capture_frame_count = 100  # 指定捕获帧数frame_rate = capture_imutils(capture_frame_count)print("imutils Frame Rate:", frame_rate)

imutils Frame Rate: 100.61413256692732

此程序使用 imutils 打开摄像头,捕捉100帧并返回平均帧率。请将此代码保存为一个单独的Python文件并运行。

分析和总结:

根据提供的数据,imutils 明显具有最高的帧速率,远高于其他库。这可能是因为 imutils 专注于提供快速的计算机视觉函数。
Pygame 也表现出相对较高的帧速率,但低于 imutils。
OpenCV 和 PyQt5 的帧速率较低,但仍然足够处理许多计算机视觉和多媒体应用程序的需求。
帧速率的选择通常取决于您的应用程序要求。如果您需要更高的性能和实时处理,imutils 或 Pygame 可能是更好的选择。如果您开发桌面应用程序或不需要高帧速率,OpenCV 和 PyQt5 可能足够满足您的需求。

捕获屏幕帧

1. pyautogui Frame Capture

如果您想在代码中使用pyautogui,您需要导入pyautogui模块。以下是修改后的代码:

import cv2
import numpy as np
import timeit
import pyautoguidef capture_and_display_frames(num_frames):frame_count = 0start_time = timeit.default_timer()# 创建一个窗口来显示捕获的屏幕帧cv2.namedWindow("Screen Capture", cv2.WINDOW_NORMAL)while frame_count < num_frames:# 截取屏幕上的帧screenshot = pyautogui.screenshot()screenshot = np.array(screenshot)# 显示捕获的屏幕帧cv2.imshow("Screen Capture", cv2.cvtColor(screenshot, cv2.COLOR_BGR2RGB))frame_count += 1# 按下q键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):breakend_time = timeit.default_timer()elapsed_time = end_time - start_timeframe_rate = frame_count / elapsed_timereturn frame_rateif __name__ == "__main__":num_frames = 100frame_rate = capture_and_display_frames(num_frames)print(f"Frame Rate for {num_frames} frames: {frame_rate:.2f} FPS")# 关闭窗口并释放资源cv2.destroyAllWindows()

这段代码已经导入了pyautogui模块,并可以使用pyautogui来捕获屏幕帧。按下"q"键可以提前退出捕获过程。确保您已经安装了相关库,然后运行这段代码以执行所需的操作。

音频和视频捕捉

2. av Frame Capture

av 是一个多媒体处理库,它支持音频和视频捕捉。虽然它主要用于音视频处理,但也可以用于摄像头捕捉。以下是测试使用 av 打开摄像头并返回平均帧率的程序:

import av
import timeitdef capture_av():container = av.open("R.mp4")stream = container.streams.video[0]frame_count = 0start_time = timeit.default_timer()while frame_count < 100:frame = next(container.decode(stream))img = frame.to_image()# Process the captured frame as neededpassframe_count += 1end_time = timeit.default_timer()elapsed_time = end_time - start_timeframe_rate = frame_count / elapsed_timereturn frame_rateif __name__ == "__main__":frame_rate = capture_av()print("av Frame Rate:", frame_rate)

此程序使用 av 打开摄像头,捕捉100帧并返回平均帧率。请将此代码保存为一个单独的Python文件并运行。

接下来,我们将继续介绍使用 Twisted 和其他捕捉方法的程序。

python 2

SimpleCV Frame Capture

SimpleCV 是一个用于计算机视觉任务的库,它内置了摄像头捕捉和图像处理功能。以下是测试使用 SimpleCV 打开摄像头并返回平均帧率的程序:

from SimpleCV import Camera
import timeitdef capture_simplecv():camera = Camera()frame_count = 0start_time = timeit.default_timer()while frame_count < 100:image = camera.getImage()# Process the captured frame as neededpassframe_count += 1end_time = timeit.default_timer()elapsed_time = end_time - start_timeframe_rate = frame_count / elapsed_timereturn frame_rateif __name__ == "__main__":frame_rate = capture_simplecv()print("SimpleCV Frame Rate:", frame_rate)

此程序使用 SimpleCV 打开摄像头,捕捉100帧并返回平均帧率。请将此代码保存为一个单独的Python文件并运行。

总结

图像和视频帧捕获是计算机视觉和多媒体应用的基本组成部分。在Python中,有多种库和工具可供选择,适用于不同的需求和场景。本文提供了一个全面的指南,帮助读者了解不同的捕获方法,包括OpenCV、Pillow、Pygame、PyQt、imutils、av和SimpleCV。我们还强调了计算平均帧率的重要性,以评估性能。通过本文的指南,读者可以更好地选择适合其项目的图像和视频帧捕获方法,从而实现更高质量

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

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

相关文章

JVM类装载器详解

目录 一、类装载的过程 1.1 装载(Load) 1.2 链接(Link) 1.2.1 验证(Varify) 二、类装载器组成 1. JVM 中内置了三个重要的 ClassLoader&#xff0c;同时按如下顺序进行加载&#xff1a; 2、图解 3、加载原则 所谓的双亲委派 类加载器负责在运行时将Java类动态加载到Java虚拟机&…

零售数据分析模板鉴赏-品类销售结构报表

不管是服装零售&#xff0c;还是连锁超市或者其他&#xff0c;只要是零售行业就绕不过商品数据分析&#xff0c;那么商品数据分析该怎么做&#xff1f;奥威BI的零售数据分析方案早早就预设好相关报表模板&#xff0c;点击应用后&#xff0c;一键替换数据源&#xff0c;立得新报…

论文阅读:Segment Any Point Cloud Sequences by Distilling Vision Foundation Models

目录 概要 Motivation 整体架构流程 技术细节 小结 论文地址&#xff1a;[2306.09347] Segment Any Point Cloud Sequences by Distilling Vision Foundation Models (arxiv.org) 代码地址&#xff1a;GitHub - youquanl/Segment-Any-Point-Cloud: [NeurIPS23 Spotlight]…

学生用什么样的台灯比较好?分享最合适学生使用的台灯

随着现在生活水平的提高&#xff0c;越来越多人重视健康的问题。尤其是对于孩子&#xff0c;很多家长对其可谓是百般担心、千般呵护&#xff0c;害怕出现什么问题&#xff0c;其中最主要的就是近视。而如今&#xff0c;我国青少年儿童的近视率可不低的&#xff0c;达到了52.7%&…

字符与数字的相互转换

一、字符转数字 char类型字符转换为数字&#xff0c;其实是转换为ASCII码值 有两种方式&#xff1a; 1.强制类型转换&#xff0c;结果为对应的ASCII码值 char v1 a;char v2 z;char v3 1;char v4 9;int num1 (int)v1;int num2 (int)v2;int num3 (int)v3;int num4 (int)v…

如果Domino上的邮件无法直接发送到@outlook.com

大家好&#xff0c;才是真的好。 目前将Domino仅仅作为邮件服务器的企业用户还不少。如果Domino服务器版本比较新&#xff08;例如版本为11.0.x、12.0.x等&#xff09;&#xff0c;外发邮件时&#xff0c;没有通过邮件网关中转邮件&#xff0c;而是直接发送到Internet互联网上…

部署k8s dashboard(这里使用Kubepi)

9. 部署k8s dashboard&#xff08;这里使用Kubepi&#xff09; Kubepi是一个简单高效的k8s集群图形化管理工具&#xff0c;方便日常管理K8S集群&#xff0c;高效快速的查询日志定位问题的工具 部署KubePI&#xff08;随便在哪个节点部署&#xff0c;我这里在主节点部署&#…

Leetcode刷题详解——有效三角形的个数

1.题目链接&#xff1a;有效三角形的个数 2.题目描述&#xff1a; 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3示…

kafka 相关概念

1 kafka 生产者 kafka 用push的方式把消息推送到topic 每个topic下可以有多个分区&#xff0c; 可以用hash 也可以用轮询的方式指定分区 每个分区内部是可以保证顺序的&#xff0c;但是整体无法保证顺序&#xff0c;除非设置成一个topic只有一个分区。 kafka这种多分区的设置 带…

在vs code中创建一个名为 “django_env“ 的虚拟环境报错?!以下方法可以解决

# vs code 终端窗口中运行&#xff1a; mkvirtualenv django_env # 拓展&#xff1a; mkvirtualenv django_env 是一个命令&#xff0c;用于创建一个名为 "django_env" 的虚拟环境。虚拟环境是一种用于隔离不同Python项目所需依赖的工具。通过创建虚拟环境&#x…

AC/DC电源模块工作效率的特点

BOSHIDA AC/DC电源模块工作效率的特点 AC/DC电源模块是一种用来将交流电转换为直流电的设备&#xff0c;在各种电子设备中应用广泛。其中&#xff0c;工作效率是评价AC/DC电源模块性能的关键指标之一。下面将从工作效率的特点方面进行阐述&#xff0c;以帮助读者更好地理解AC/…

小程序开发平台源码系统+ 带前后端完整搭建教程

大家好&#xff0c;给大家分享一个小程序开发平台源码系统。这款小程序开发平台中有很多功能&#xff0c;今天主要来给大家介绍一下洗车行业小程序制作的功能。以下是部分核心代码图&#xff1a; 系统特色功能&#xff1a; LBS定位&#xff1a;小程序能够自动显示附近的共享洗…

mysql面试题50:500台数据库,如何在最快时间之内重启

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:500台db,如何在最快时间之内重启呢? 如果需要在最快时间内重启500台数据库,可以考虑采用并行化和自动化的方法来提高效率。比如: 编写自动化脚…

Window 窗口函数 (Spark Sql)

在 Spark SQL 中&#xff0c;Window 函数是一种用于在查询结果集中执行聚合、排序和分析操作的强大工具。它允许你在查询中创建一个窗口&#xff0c;然后对窗口内的数据进行聚合计算。 import org.apache.spark.sql.expressions.Window import org.apache.spark.sql.functions…

Python+高光谱数据预处理-机器学习-深度学习-图像分类-参数回归

涵盖高光谱遥感数据处理的基础、python开发基础、机器学习和应用实践。重点解释高光谱数据处理所涉及的基本概念和理论&#xff0c;旨在帮助学员深入理解科学原理。结合Python编程工具&#xff0c;专注于解决高光谱数据读取、数据预处理、高光谱数据机器学习等技术难题&#xf…

FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现 UDP 网络视频传输,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、我这里已有的以太网方案3、设计思路框架视频源选择OV5640摄像头配置及采集动态彩条UDP协议栈UDP视频数据组包UDP协议栈数据发送UDP协议栈数据缓冲IP地址、端口号的修改Tri Mode Ethernet MAC1G/2.5G Ethernet PCS/PMA or SGMIIQT上位机和源…

LangChain结合milvus向量数据库以及GPT3.5结合做知识库问答之一 --->milvus的docker compose安装

https://github.com/milvus-io/milvus/releaseshttps://github.com/milvus-io/milvus/releases 以下步骤均在Linux环境中进行&#xff1a; 将milvus-standalone-docker-compose.yml下载到本地。 1、新建一个目录milvus 2、将milvus-standalone-docker-compose.yml放到milvu…

【2】c++11新特性(稳定性和兼容性)—>超长整型 long long

c11标准要求long long整型可以在不同的平台上有不同的长度&#xff0c;但是至少64位&#xff0c;long long整型有两种&#xff1a; 有符号long long&#xff1a;–对应类型的数值可以使用LL或者ll后缀 long long num1 123456789LL; long long num2 123456789ll;无符号unsign…

蓝桥杯 常用STL (C++) 未完待续

动态数组 有些时候想开一个数组&#xff0c;但是却不知道应该开多大长度的数组合适&#xff0c;因为我们需要用到的数组可能会根据情况变动。 这时候我们就需要用到动态数组。所谓动态数组&#xff0c;也就是不定长数组&#xff0c;数组的长度是可以根据我们的需要动态改变的。…

innovus:antenna设置

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 innovus和ICC2还不一样&#xff0c;ICC2需要读antenna rule&#xff0c;innovus只看antenna lef&#xff0c;所以要检查一下lef里antenna信息全不全。 然后设置如下option: s…