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

OpenCV 玩转图像和视频

为什么学OpenCV?

• OpenCV ⽀持对图像缩放、旋转、绘制⽂字图形等基础操作
• OpenCV 库包含了很多计算机视觉领域常⻅算法:⽬标检测、⽬标跟踪等

OpenCV 简介

• OpenCV (Open Source Computer Vision) 是计算机视觉和机器学习软件库
• Intel 1999年 创建,⽤C++语⾔编写(提供了Python、Ruby、MATLAB等接⼝)

• 安装 OpenCV
• OpenCV 读取、缩放、翻转、写⼊图像
• OpenCV 在图像上绘制⽂字、⼏何图形
• OpenCV 视频操作

安装:
conda install -c conda-forge opencv
conda install opencv(换源后)

pip install opencv-python
检查是否安装成功:
$ Python
>>> import cv2
>>> cv2.version
‘4.5.4’

Notebook 演示

OpenCV 基本处理

导入相关的库

import numpy as np
import pandas as pd
import cv2
import matplotlib.pyplot as plt
%matplotlib inline

查看opencv的版本

cv2.__version__

读取照片

img = cv2.imread("./img/cat.jpg") #即使图片的路径不存在也不会进行报错

展示图片

plt.imshow(img)

图片的存取的形式
opencv B G R
matplotlib R G B
将opencv转化为matplotlib的形式

img_fixed = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

灰度图的形式展现

plt.imshow(img_gray,cmap="gray")

改变img的大小

img_resize = cv2.resize(img_fixed,(1000,300))

图像的翻转

#0代表垂直翻转,1代表水平翻转,-1水平垂直都翻转
img_flip = cv2.flip(img_fixed,-1)

将RGB转化为BGR的格式

img_save = cv2.cvtColor(img_flip,cv2.COLOR_RGB2BGR) #将RGB转化为BGR的格式

保存BGR形式的图片

cv2.imwrite('./img_flip.jpg',img_save)

opencv 绘制文字和几何图形

导入包

# 导入包
import cv2
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
%matplotlib inline

创建一个空白的图像

black_img = np.zeros(shape = (800,800,3),dtype = np.int16)

查看空白图像的类型

black_img.shape

在这里插入图片描述展示图片

plt.imshow(black_img)

在这里插入图片描述使用opencv画矩形

# 使用opencv画矩形
cv2.rectangle(img = black_img,pt1 = (100,100),pt2 = (400,300),color = (0,255,0),thickness = 10)
# 使用opencv画矩形
cv2.rectangle(img = black_img,pt1 = (100,100),pt2 = (400,300),color = (0,255,0),thickness = 10)

使用opencv画一个圆

# 利用opencv画一个圆
cv2.circle(img = black_img,center=(400,400),radius = 100,color=(0,0,255),thickness = 10)
# 画一个实心的圆
cv2.circle(img = black_img,center=(400,600),radius = 100,color=(0,0,255),thickness = -1)

opencv画一条线

# opencv 画一条线
cv2.line(img=black_img,pt1=(0,0),pt2=(800,800),color=(255,0,255),thickness=10)

opencv添加一段文字

# opencv添加一段文字
font = cv2.FONT_HERSHEY_PLAIN#导入字体
cv2.putText(img=black_img,text="python",org=(500,150),fontFace=font,fontScale=4,color=(255,0,255),thickness=5,lineType=cv2.LINE_AA)

opencv画多边形

#利用opencv画多边形
black_img = np.zeros(shape=(800,800,3),dtype=np.int16)
points = np.array([[400,100],[200,300],[400,700],[600,300]],dtype=np.int32)
pts = points.reshape(-1,1,2)
cv2.polylines(img=black_img,pts=[pts],isClosed=True,color=(255,0,0),thickness=10,lineType=cv2.LINE_AA)
plt.imshow(black_img)

注意opencv画图形是在opencv图像上画的(也就是BGR的形式)

opencv的小例子

demo1.py

"""
opencv显示图像
"""# 导入opencv
import cv2
import numpy as np# 读取图片
img = cv2.imread("./img/cat.jpg")# 显示图片
# cv2.imshow('Demo',img)]while True:# 一直显示cv2.imshow('Demo', img)# 如果等待至少10ms,并且用户按了ESC键(ord('q))if cv2.waitKey(10) & 0xFF == ord('q'):# if cv2.waitKey(10) & oxFF == 27:break# 关闭所有的窗口
cv2.destroyAllWindows()

demo2.py

"""
OpenCV读取摄像头视频流,并显示
类似demo1.py中的显示图片
"""# 导入OpenCV
import cv2# 使用VideoCapture,读取默认摄像头,后面的数字表示摄像头的编号,如果有多个摄像头可以换成其他数字
cap = cv2.VideoCapture(0)# 再使用cap.read()读取视频流,类似照片,他会以一帧帧的图片返回,所以我们需要用一个循环语句来一直获取
while True:# 返回的是元组ret,frame = cap.read() #frame就是一帧帧的图片# 这里可以把frame 就当成图片来处理# 镜像frame = cv2.flip(frame,1)# 颜色变为灰度gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)# 显示图像cv2.imshow('demo',gray)# 退出条件: ESCif cv2.waitKey(10) & 0xFF == 27:breakcap.release()
cv2.destroyAllWindows()

demo3.py

"""
OpenCV读取摄像头视频流,并存储为MP4文件
"""# 导入OpenCV
import cv2# 读取默认摄像头
cap = cv2.VideoCapture(0)# https://docs.opencv.org/4.x/dd/d43/tutorial_py_video_display.html
# fps = 20
width = int( cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int( cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 这里使用OpenCV的VideoWriter方法来,我们看一下官网他是如何使用的
# 可以看到第一个参数是文件名,然后是fourcc编码,然后是FPS帧率,再是画面大小
# 这里需要注意的是Fourcc编码,我们再看一下文档,可以看到
# Windows系统建议用DIVX编码
# macOS系统建议永MJPG、DIVX、X264
# 推荐用 X264、DIVX,一般macOS和Windows都试用
# 写法需要注意*'X264'
## FPS 帧率一般根据摄像头的帧率来填写,比如我的是20
# 高度、宽度可以自定义,不过我们也可以直接和原画面一样,使用cap.get方法获取writer = cv2.VideoWriter('./myDemoVideo.mp4',cv2.VideoWriter_fourcc(*'X264'),fps,(width,height))while True:# 读取视频ret,frame = cap.read()# 这里可以把frame 就当成图片来处理# 镜像frame = cv2.flip(frame,1)gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)# 写入画面writer.write(frame)# 显示图像cv2.imshow('demo',gray)# 退出条件: ESCif cv2.waitKey(10) & 0xFF == 27:break# 释放句柄    
writer.release()
cap.release()
cv2.destroyAllWindows()

demo4.py

"""
OpenCV读取mp4视频文件
"""# 导入OpenCV
import cv2
import time# 还是使用cv2.VideoCapture,只不过参数可以换成文件名,我们读取前面保存的MP4视频
cap = cv2.VideoCapture('./vedio/myDemoVideo.mp4')# 首先加一个判断,如果文件不存在或编码错误提示
if not cap.isOpened():print('文件不存在或编码错误')while cap.isOpened():# 读取帧ret,frame = cap.read() #retbool判断是否读取成功if ret:# 显示cv2.imshow('demo',frame)# 降低显示速度(不加这行会显示得特别快)time.sleep(1/20)if cv2.waitKey(1) & 0xFF == ord('q'):breakelse:breakcap.release()
cv2.destroyAllWindows()

demo5.py

"""
Opencv在视频流上添加文字和图形
"""
# 导入Opencv模块
import cv2
import numpy as np
import time#导入自定义模块
import drawUtils#读取摄像头
cap = cv2.VideoCapture(0)# 当前时间Unix时间戳
start_time = time.time()while True:ret,frame = cap.read()#frame其实就是一帧帧的画面#对frame进行操作frame = cv2.flip(frame,1)#绕y轴旋转#print(type(frame))#打印frame的类型#画一个矩形cv2.rectangle(frame,(20,200),(120,300),(255,0,255),10)now = time.time()#当前时间fps_text = int(1/(now -start_time))#帧率,每秒处理的图片数量start_time = now#开始时间重新归零print(fps_text)frame_text = "帧率:" + str(fps_text)#显示帧率frame = drawUtils.cv2AddChineseText(frame,frame_text,(20,50),(0,255,255),30)#显示画面cv2.imshow('Demo',frame)#退出条件if cv2.waitKey(10) & 0xFF == 27:breakcap.release()
cv2.destroyAllWindows()

相关文章:

OpenCV 玩转图像和视频

为什么学OpenCV? • OpenCV ⽀持对图像缩放、旋转、绘制⽂字图形等基础操作 • OpenCV 库包含了很多计算机视觉领域常⻅算法:⽬标检测、⽬标跟踪等 OpenCV 简介 • OpenCV (Open Source Computer Vision) 是计算机视觉和机器学习软件库 • Intel 1999…...

技术分享 | 如何编写同时兼容 Vue2 和 Vue3 的代码?

LigaAI 的评论编辑器、附件展示以及富文本编辑器都支持在 Vue2(Web)与 Vue3(VSCode、lDEA)中使用。这样不仅可以在不同 Vue 版本的工程中间共享代码,还能为后续升级 Vue3 减少一定阻碍。 那么,同时兼容 Vue…...

基于ArcGis提取道路中心线

基于ArcGis提取道路中心线 文章目录 基于ArcGis提取道路中心线前言一、生成缓冲区二、导出栅格数据三、导入栅格数据四、新建中心线要素五、生成中心线总结 前言 最近遇到一个问题,根据道路SHP数据生成模型的时候由于下载的道路数据杂项数据很多,所以导…...

xcode14.3更新一系列问题

1. Missing file libarclite_iphoneos.a (Xcode 14.3) 解决方法 Xcode升级到14.3后编译失败,完整错误日志: File not found: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneo…...

1U和2U的服务器怎么选择

企业建设网站的过程中,离不开租用服务器的环节,服务器在多种场景里面都可以发挥作用,服务器租用渠道有哪些?1U、2U选哪种服务器比较好?大家跟着壹基比小鑫一起来了解具体内容吧! 1U、2U选哪种服务器比较好&…...

【SA8295P 源码分析】05 - SA8295P QNX Host 上电开机过程 进一步梳理(结合代码)

【SA8295P 源码分析】05 - SA8295P QNX Host 上电开机过程 进一步梳理(结合代码) 一、APPS PBL(Application Primary Boot Loader):固化在CPU ROM中1.1 APPS PBL 加载 XBL Loader1.2 XBL Loader加载验证并运行SMSS进行自检,自检完成后触发Warm Reset1.3 WarmRest后,APPS…...

【数据结构与算法】迪杰斯特拉算法

迪杰斯特拉算法 介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。 算法过程 设置…...

python爬虫-网页数据提取

import requests #headers 网页右键->Network->最下面的User-Agent复制。 headers {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"} #你想要的网址 url &q…...

ZigBee的Many-to-One和Source Routing

1. Many-to-One Routing Many-to-One Routing,是一种简单的路由机制,使得整个网络中的路由设备拥有回到中心节点的路由。 在这种机制下,中心节点周期性发送Many-to-One route discovery广播(协议栈默认设置为60s,可以…...

七夕节 Chinese Valentine‘s Day 的由来

农历七月初七是七夕节。Qixi Festival falls on the seventh day of the seventh lunar month. 以前有一个牛郎,和他的哥哥和嫂子住在一起。他放的一头牛曾经是天庭的一个神仙,但他违反天庭的戒律,变成牛放到了人间。As the story goes,once …...

掌握JDK21全新结构化并发编程,轻松提升开发效率!

1 概要 通过引入结构化并发编程的API,简化并发编程。结构化并发将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消操作,提高可靠性,并增强可观察性。这是一个预览版的API。 2 历史 结构化并发是由JEP 42…...

【SA8295P 源码分析】00 - 系列文章链接汇总 - 持续更新中

【SA8295P 源码分析】00 - 系列文章链接汇总 - 持续更新中 一、分区、下载、GPIO等杂项相关二、开机启动流程代码分析二、OpenWFD 显示屏模块三、Touch Panel 触摸屏模块四、QUPv3 及 QNX Host透传配置五、Camera 摄像头模块(当前正在更新中...)六、网络…...

TCP拥塞控制详解 | 6. 主动队列管理

网络传输问题本质上是对网络资源的共享和复用问题,因此拥塞控制是网络工程领域的核心问题之一,并且随着互联网和数据中心流量的爆炸式增长,相关算法和机制出现了很多创新,本系列是免费电子书《TCP Congestion Control: A Systems …...

前端学习清单

顺序不分先后。 技术名称技术描述技术链接HTML5HTML5是下一代的HTML标准,是一种用于结构化内容的标记语言。MDN|HTMLCSS3CSS3是CSS技术的升级版本,它的最大好处就是可以让网页设计师更加方便的为网页添加各种各样的样式,而不用再局限于文字、…...

go atomic原子操作详细解读

文章目录 概要1、基本知识1.1 原子操作是什么1.2 CPU怎么实现原子操作的? 2、atomic包2.1、 Add函数2.2、CompareAndSwap函数2.3、Swap函数2.4、Load函数2.5、Store函数 3、atomic.Value值 概要 atomic包是golang通过对底层系统支持的原子操作进行封装,…...

Vue用JSEncrypt对长文本json加密以及发现解密失败

哈喽 大家好啊,最近发现进行加密后 超长文本后端解密失败,经过看其他博主修改 JSEncrypt原生代码如下: // 分段加密,支持中文JSEncrypt.prototype.encryptUnicodeLong function (string) {var k this.getKey();//根据key所能编…...

Excel/PowerPoint折线图从Y轴开始(两侧不留空隙)

默认Excel/PowerPoint折线图是这个样子的: 左右两侧都留了大块空白,很难看 解决方案 点击横坐标,双击,然后按下图顺序点击 效果...

C++的类成员对齐

这是个小语法点,之前我们的对齐方式都是使用#pragma pack,这个方式实际是依赖编译器,且粒度粗(如果#pragma pack(1)之后没有#pragma pack(),那就作用整个进程了)。在C11之后引入关键字alignas,以此来实现对齐更加便利,…...

敏感挂载userhelper容器逃逸复现

目录 前言 分析 实验 前言 分析 实验 # Creates a payload cat "#!/bin/sh" > /evil-helper cat "ps > /output" >> /evil-helper chmod x /evil-helper # Finds path of OverlayFS mount for container # Unless the configuration ex…...

深度解读Promise.prototype.finally

由一个问题引发的血案: 手写源码实现Promise.prototype.finally。 我们知道,对于promise来讲,当状态敲定,无论状态兑现或拒绝时都需要调用的函数,可以使用Promise.prototype.finally的回调来实现。那么如何手写实现Pro…...

如何实现24/7客户服务自动化?建设智能客服知识库

客户自助服务是指用户通过企业或者第三方建立的网络平台或者终端,实现相关的自定义处理。实现客户服务自动化,对提高客户满意度、维持客户关系至关重要。客户服务自动化可以帮助企业以更快的速度和更高的效率来满足客户的售后服务要求,以进一…...

和鲸 ModelWhale 与中科可控多款服务器完成适配认证,赋能中国云生态

当前世界正处于新一轮技术革命及传统产业数字化转型的关键期,云计算作为重要的技术底座,其产业发展与产业规模对我国数字经济的高质量运行有着不可取代的推动作用。而随着我国数字上云、企业上云加快进入常规化阶段,云计算承载的业务应用越来…...

selenium +Jmeter 的性能测试

通过Jmeter快速将已有的Selenium 代码以性能测试的方式组织起来,并使用JMeter 丰富的报表展示测试结果 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By driver …...

探索高效的HTTP异步接口测试方法:从轮询等待到自动化方案

本文将深入探讨HTTP异步接口测试的多个方面,包括轮询等待、性能测试以及自动化方案。通过详细的解释和实际案例,帮助您了解如何有效地测试异步接口,确保系统的稳定性和性能。 在现代软件开发中,HTTP异步接口扮演着至关重要的角色&…...

Android资深工程书之LiveData核心组件原理剖析

LiveData是Android架构组件库中的一个类,用于在应用程序组件之间共享数据。它是一种可观察的数据持有者,可以感知应用程序组件的生命周期,并在数据发生变化时通知观察者。 使用LiveData 在Android应用程序中使用LiveData,你可以…...

Vue的五种方法实现加减乘除运算

五种方法的详细说明: 计算属性(Computed Properties): 计算属性是Vue.js提供的一种便捷的属性,它根据依赖的数据动态计算出一个新的值。计算属性的值会被缓存,只有当依赖的数据发生变化时,才会…...

C++(1)Linux基础知识

经济下行,计算机就业形势严峻,为了勉励自己继续进步,继续学习代码提高核心竞争力。 安装QT Creator 首先,安装QT开发工具QT Creator 参考:2021最新Qt6开发环境(Qt Creator)安装以及卸载记录_q…...

接口自动化yaml文件读取与写入

前言 在走进yaml文件之前大家应该都很想知道他是用来干嘛的? 是的是的,他是用来做接口自动化测试的。 我们一起来学习他吧!——(一定要收藏带走哦❤) 1、yaml文件有什么作用呢? ①可作为配置文件使用—…...

Java Map、JSONObject、实体类互转

文章目录 前言Map、JSONObject、实体类互转 前言 使用库 com.alibaba.fastjson2,可完成大部分JSON转换操作。 详情参考文章: Java FASTJSON2 一个性能极致并且简单易用的JSON库 Map、JSONObject、实体类互转 import com.alibaba.fastjson2.JSON; import com.alib…...

在Hive/Spark上执行TPC-DS基准测试 (PARQUET格式)

在上一篇文章:《在Hive/Spark上运行执行TPC-DS基准测试 (ORC和TEXT格式)》中,我们介绍了如何使用 hive-testbench 在Hive/Spark上执行TPC-DS基准测试,同时也指出了该项目不支持parquet格式。 如果我们想要生成parquet格式的测试数据,就需要使用其他工具了。本文选择使用另…...

基于CentOS搭建私有仓库harbor

环境: 操作系统:CentOS Linux 7 (Core) 内核: Linux 3.10.0-1160.el7.x86_64 目录 安装搭建harbor (1)安装docker编排工具docker compose (2)下载Harbor 安装包 (3&…...

PDF怎么转Word?8 个最佳 PDF 转 Word 转换器

PDF 转 Word 转换工具只是一个特殊程序,可以将 PDF(本机和/或扫描)转换为 Microsoft Office Word 格式。将 PDF 导出到 Word 的主要原因之一是满足可编辑文档的需求,尽管还有其他原因。 由于缺少 PDF 阅读器,您可以选…...

老板都爱看的财务数据分析报表,全在这了

老板们都爱看哪些财务数据分析报表?自然是可以帮助他们更好地了解公司的财务状况和经营绩效的那一类财务数据分析报表,比如利润表、资产负债表、现金流量表、应收账款分析报表、应付账款分析报表、库存分析报表等。奥威BI数据可视化工具有一套标准化财务…...

ZooKeeper(zk)与 Eureka 的区别及集群模式比较分析

​ 作者:zhaokk 推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 「java、python面试题」来自UC网盘app分享,打开手机app&#xff…...

搜狗拼音占用了VSCode及微信小程序开发者工具快捷键Ctrl + Shit + K 搜狗拼音截图快捷键

修改搜狗拼音的快捷键 右键--更多设置--属性设置--按键--系统功能快捷键--系统功能快捷键设置--取消Ctrl Shit K的勾选--勾选截屏并设置为Ctrl Shit A 微信开发者工具设置快捷键 右键--Command Palette--删除行 微信开发者工具快捷键 删除行:Ctrl Shit K 或…...

PMI-ACP值得考吗?在中国的前景如何?

相信很多小伙伴都听过PMP证书吧,但是对于PMI-ACP则知之甚少。那么同为项目管理证书,PMI-ACP认证的含金量怎么样呢?今天咱们就来聊一聊PMI-ACP敏捷项目管理证书。 PMI-ACP是由PMI(美国项目管理协会)颁发的针对敏捷项目…...

centos 安装防火墙,并开启对应端口号

1.查看防火墙状态: 命令:systemctl status firewalld.service 开启防火墙时,提示没有安装防火墙 [rootlocalhost ~]# systemctl start firewalld.service Failed to start firewalld.service: Unit not found.2.安装防火墙 [rootlocalhost …...

学习微信小程序时间延迟setTimeout和setInterval的使用方法

学习微信小程序时间延迟setTimeout和setInterval的使用方法 setTimeout()setInterval() setTimeout() setTimeout在使用的时候可以实现代码块延迟执行的效果,并且可以设置延迟执行的具体时间。请见如下代码: setTimeout(function() {//要实现延迟执行效…...

Vite好用的前端构建工具

是什么 Vite是Vue的作者尤雨溪开发的 一种新型前端构建工具。 Vite在大型项目开发模式下,打包速度远高于webpack。 Vite 为什么这么快 1. 快速冷启动 Vite只启动一台静态页面的服务器,不会打包全部项目文件代码,服务器根据客户端的请求加…...

Agile Iteration Velocity

【agile iteration velocity】敏捷速度指的平均速度 第四次迭代结束速度: 76 / 4 19 第五次迭代结束速度: (76 24 ) / 5 100 / 5 20...

HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制LazyForEach数据懒加载

LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当LazyForEach在滚动容器中使用了,框架会根据滚动容器可视区域按需创建组件,当组件划出可视区域外时,框架会进行组件销毁回收以降低内存占用。一、接…...

04_15页表缓存(TLB)和巨型页

前言 linux里面每个物理内存(RAM)页的一般大小都是4kb(32位就是4kb),为了使管理虚拟地址数变少 加快从虚拟地址到物理地址的映射 建议配值并使用HugePage巨型页特性 cpu和mmu和页表缓存(TLB)和cache和ram的关系 CPU看到的都是虚拟地址,需要经过MMU的转化&#xf…...

ResourceBundle类:读取配置文件

ResourceBundle类是java自带的类,类路径:java.util.ResourceBundle,用来读取项目中后缀为properties的配置文件。 下面简单举例说明一下用法: 数据准备 1)配置文件名称:application.properties&#xff…...

数学建模的三大模型和十大常用算法

一、三大模型 预测模型 神经网络预测、灰色预测、拟合插值预测(线性回归)、时间序列预测、马尔科夫链预测、微分方程预测、Logistic模型等等。 应用领域:人口预测、水资源污染增长预测、病毒蔓延预测、竞赛获胜概率预测、月收入预测、销量预测、经济发展情况预测等在…...

NAS绝对安全吗?文件会不会泄露或被删除?

NAS(Network Attached Storage)并非绝对安全,因为任何系统都存在潜在的风险和漏洞。以下是一些可能导致文件泄露或被删除的情况: 1. 物理安全:如果未采取适当的物理安全措施,例如未将NAS设备放置在安全环境…...

Kubernetes 使用 Rancher 管理

K8S集群管理工具 只能管理单个K8S集群 kubectl命令行管理工具 dashboard(K8S官方的UI界面图形化管理工具) (管理多集群很麻烦,切换不同集群每次需要更改kube-config文件[kubectl配置文件],如果kubeadm部署每次都需…...

5G随身wifi如何选择?简单分类一下

最近5g随身wifi越来越多了,价格也一直走低,根据我的观察和总结,5g随身wifi可以分为这几档:(普遍来说) 1,紫光udx710基带芯片(也叫v510) 代表产品:r106&#x…...

华为PPPOE配置实验

华为PPPOE配置实验 网络拓扑图拓扑说明电信ISP设备配置用户拨号路由器配置查看是否拨上号是否看不懂? 看不懂就对了,只是记录一下命令。至于所有原理,等想写了再写 网络拓扑图 拓扑说明 用户路由器用于模拟家用拨号路由器,该设备…...

1.jvm和java体系结构

jvm简介 JVM:跨语言的平台 Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。 ● 作为一个平台,Java虚拟机扮演着举足轻重的…...

h264 SPS 帧分辨率解析标准

来源:微信公众号「编程学习基地」 文章目录 导致1088出现的原因h264 sps解析h264bitstream的简单使用导致1088出现的原因 大部分IPC推过来的数据流都是标准的1080P(1920x1080),720P(1280x720) 但是也有个例,部分设备存在16位/32位对齐的情况,出现非标1080P(1920x1088),72…...