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

opencv-gpu版本编译(添加java支持,可选)实现硬解码

目录

  • opencv gpu版本编译,实现硬解码,加速rtsp视频流读取
      • 1、准备文件
      • 2、复制 NVCUVID 头文件到 cuda 安装目录 include
      • 3、安装相关依赖
      • 4、 执行cmake
      • 5、编译安装
      • 6、测试

opencv gpu版本编译,实现硬解码,加速rtsp视频流读取

前置条件,显卡驱动,cuda 已安装

这里cuda安装路径为 /usr/local/cuda-11.2

1、准备文件

  • opencv-4.5.5

  • opencv_contrib-4.5.5
    在这里插入图片描述

  • nucuvid:官网下载
    在这里插入图片描述

2、复制 NVCUVID 头文件到 cuda 安装目录 include

sudo cp cuviddec.h nvcuid.h nvEncodeAPI. /usr/local/cuda-11.2/include

3、安装相关依赖

  • 执行01_install_dependence.sh
#!/bin/bashsudo apt update
sudo apt upgrade#sudo apt install -y gcc-10 g++-10
sudo apt install -y build-essential cmake pkg-config yasm git checkinstall
sudo apt install -y pkg-config yasm checkinstall
sudo apt install -y libjpeg-dev libpng-dev libtiff-dev
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev 
sudo apt install -y libxvidcore-dev x264 libx264-dev libfaac-dev libmp3lame-dev libtheora-dev 
sudo apt install -y libfaac-dev libmp3lame-dev libvorbis-dev
sudo apt install -y libgtkglext1 libgtkglext1-dev
sudo apt-get install -y libavresample-dev libdc1394-22 libdc1394-22-dev libxine2-dev libv4l-dev v4l-utils

4、 执行cmake

  • 执行02_install_opencv.sh
cd opencv_build
#unzip opencv.zip
#unzip opencv_contrib.zipecho "Moving onto the build portion of things"
cd opencv-4.5.5
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_C_COMPILER=/usr/bin/gcc-9 \-D CMAKE_INSTALL_PREFIX=../install_dir \-D OPENCV_GENERATE_PKGCONFIG=ON \-D BUILD_opencv_python3=ON \-D CUDA_ARCH_BIN=8.6\-D WITH_CUDA=ON \-D WITH_CUDNN=ON \-D OPENCV_DNN_CUDA=ON \-D ENABLE_FAST_MATH=1 \-D CUDA_FAST_MATH=1 \-D OPENCV_ENABLE_NONFREE=ON \-D WTIH_CUBLAS=1 \-D WITH_V4L=ON \-D WITH_NVCUVID=ON \-D WITH_OPENGL=ON \-D WITH_FFMPEG=ON \-D BUILD_opencv_java=ON \-D OPENCV_EXTRA_MODULES_PATH=~/opencv_project/opencv_build/opencv_contrib-4.5.5/modules ..echo "Configuring build & making OpenCV"
echo 'finished all the shit'

需要注意的地方

  • -D CMAKE_INSTALL_PREFIX=../install_dir:安装路径

  • -D CUDA_ARCH_BIN=8.6 : 显卡算力

  • -D WITH_CUDA=ON:启用CUDA支持

  • -D WITH_CUDNN=ON:启用CUDNN支持

  • -D OPENCV_DNN_CUDA=ON:启用CUDA加速的深度学习模块

  • -D WITH_NVCUVID=ON:启用NVCUVID支持,允许OpenCV在NVIDIA GPU上解码视频。

  • -D BUILD_opencv_java=ON : 启用 java 支持,需要先配置好java环境变量(jdk,ant),可选项

cmake 执行完成

-- 
--   OpenCV modules:
--     To be built:                 alphamat aruco barcode bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform java line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab wechat_qrcode xfeatures2d ximgproc xobjdetect xphoto
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 cvv hdf julia matlab ovis python2 python3 sfm viz
--     Applications:                tests perf_tests apps
--     Documentation:               NO
--     Non-free algorithms:         YES
-- 
--   GUI:                           GTK2
--     GTK+:                        YES (ver 2.24.32)
--       GThread :                  YES (ver 2.64.6)
--       GtkGlExt:                  YES (ver 1.2.0)
--     OpenGL support:              YES (/usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGLU.so)
--     VTK support:                 NO
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.11)
--     JPEG:                        /usr/lib/x86_64-linux-gnu/libjpeg.so (ver 80)
--     WEBP:                        build (ver encoder: 0x020f)
--     PNG:                         /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.6.37)
--     TIFF:                        /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 / 4.1.0)
--     JPEG 2000:                   build (ver 2.4.0)
--     OpenEXR:                     /usr/lib/x86_64-linux-gnu/libImath.so /usr/lib/x86_64-linux-gnu/libIlmImf.so /usr/lib/x86_64-linux-gnu/libIex.so /usr/lib/x86_64-linux-gnu/libHalf.so /usr/lib/x86_64-linux-gnu/libIlmThread.so (ver 2_3)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
-- 
--   Video I/O:
--     DC1394:                      YES (2.2.5)
--     FFMPEG:                      YES
--       avcodec:                   YES (58.54.100)
--       avformat:                  YES (58.29.100)
--       avutil:                    YES (56.31.100)
--       swscale:                   YES (5.5.100)
--       avresample:                YES (4.0.0)
--     GStreamer:                   YES (1.16.3)
--     v4l/v4l2:                    YES (linux/videodev2.h)
-- 
--   Parallel framework:            pthreads
-- 
--   Trace:                         YES (with Intel ITT)
-- 
--   Other third-party libraries:
--     Intel IPP:                   2020.0.0 Gold [2020.0.0]
--            at:                   /home/dell/ljn/opencv_project/opencv_build/opencv-4.5.5/build/3rdparty/ippicv/ippicv_lnx/icv
--     Intel IPP IW:                sources (2020.0.0)
--               at:                /home/dell/ljn/opencv_project/opencv_build/opencv-4.5.5/build/3rdparty/ippicv/ippicv_lnx/iw
--     VA:                          NO
--     Lapack:                      NO
--     Eigen:                       YES (ver 3.3.9)
--     Custom HAL:                  NO
--     Protobuf:                    build (3.19.1)
-- 
--   NVIDIA CUDA:                   YES (ver 11.2, CUFFT CUBLAS NVCUVID FAST_MATH)
--     NVIDIA GPU arch:             86
--     NVIDIA PTX archs:
-- 
--   cuDNN:                         YES (ver 8.6.0)
-- 
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/dell/ljn/opencv_project/opencv_build/opencv-4.5.5/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
-- 
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.8.10)
--     Libraries:                   NO
--     numpy:                       NO (Python3 wrappers can not be generated)
--     install path:                -
-- 
--   Python (for build):            /usr/bin/python3
-- 
--   Java:                          
--     ant:                         /usr/local/apache-ant-1.10.13/bin/ant (ver 1.10.13)
--     JNI:                         /usr/lib/jvm/jdk1.8.0_361/include /usr/lib/jvm/jdk1.8.0_361/include/linux /usr/lib/jvm/jdk1.8.0_361/include
--     Java wrappers:               YES
--     Java tests:                  YES
-- 
--   Install to:                    /home/dell/ljn/opencv_project/opencv_build/opencv-4.5.5/install_dir
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dell/ljn/opencv_project/opencv_build/opencv-4.5.5/build
Configuring build & making OpenCV
finished all the shit
  • gpu 加速开启成功
    在这里插入图片描述
  • java 支持开启成功
    在这里插入图片描述

5、编译安装

  • 进入cmake创建的build目录

    cd opencv_build/opencv-4.5.5/build#编译,根据电脑核心数选择合适线程
    make -j30  
    
  • 安装

    make install
    

6、测试

  • 进入目录opencv_gpu_test,编译执行程序,在CMakeLIsts.txt中修改opencv的安装路径

    cd build
    make 
    ./opencv_test
    
  • CMakeLIsts.txt

    cmake_minimum_required(VERSION 3.0.2)
    project(opencv_test)
    SET(CMAKE_BUILD_TYPE "Release")# 安装路径
    find_package(OpenCV 4.5.5 REQUIRED PATHS /home/lenovo/opencv_project/opencv_build/opencv-4.5.5/install_dir)include_directories(${OpenCV_INCLUDE_DIRS})add_executable(opencv_test test.cc )
    #add_executable( opencv_test gpu_mat.cpp )
    target_link_libraries( opencv_test${OpenCV_LIBRARIES}/usr/lib/x86_64-linux-gnu)
    
  • test.cc

    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    #include <numeric>
    #include "opencv2/opencv_modules.hpp"
    #include <opencv2/core/utility.hpp>
    #include <opencv2/core.hpp>
    #include <opencv2/core/opengl.hpp>
    #include <opencv2/cudacodec.hpp>
    #include <opencv2/highgui.hpp>int main(int argc, const char* argv[])
    {//std::cout<<cv::getBuildInformation()<<std::endl;//将这个流改成你自己的const std::string fname = "rtsp://admin:abcd1234@192.168.1.110:554/smart264/ch1/main/av_stream";const std::string gfname = "rtsp://admin:abcd1234@192.168.1.110:554/Streaming/Channels/2";std::cout<<"Set device...."<<std::endl;int numDevice = cv::cuda::getCudaEnabledDeviceCount();std::cout<<"device count: "<<numDevice<<std::endl;int cudaDevice = 0;cv::cuda::setDevice(cudaDevice);//cv::cuda::setGlDevice(cudaDevice);//cv::cuda::setGlDevice(1);std::cout<<"read rtsp through cpu..."<<std::endl;cv::Mat frame;cv::VideoCapture reader(fname);cv::cuda::GpuMat d_frame;std::cout<<"read rtsp through cuda..."<<std::endl;cv::Ptr<cv::cudacodec::VideoReader> d_reader = cv::cudacodec::createVideoReader(fname);cv::TickMeter tm;std::vector<double> cpu_times;std::vector<double> gpu_times;std::cout<<"test"<<std::endl;for (int i = 0;i<500;i++){tm.reset(); tm.start();if (!reader.read(frame))break;tm.stop();cpu_times.push_back(tm.getTimeMilli());tm.reset(); tm.start();if (!d_reader->nextFrame(d_frame))break;tm.stop();gpu_times.push_back(tm.getTimeMilli());}if (!cpu_times.empty() || !gpu_times.empty()){std::cout << std::endl << "Results:" << std::endl;//std::sort(cpu_times.begin(), cpu_times.end());std::sort(gpu_times.begin(), gpu_times.end());//double cpu_avg = std::accumulate(cpu_times.begin(), cpu_times.end(), 0.0) / cpu_times.size();double gpu_avg = std::accumulate(gpu_times.begin(), gpu_times.end(), 0.0) / gpu_times.size();//std::cout << "CPU : Avg : " << cpu_avg << " ms FPS : " << 1000.0 / cpu_avg << std::endl;std::cout << "GPU : Avg : " << gpu_avg << " ms FPS : " << 1000.0 / gpu_avg << std::endl;}return 0;
    }
    // #endif
    
  • 结果如下安装成功

在这里插入图片描述

相关文章:

opencv-gpu版本编译(添加java支持,可选)实现硬解码

目录 opencv gpu版本编译&#xff0c;实现硬解码&#xff0c;加速rtsp视频流读取1、准备文件2、复制 NVCUVID 头文件到 cuda 安装目录 include3、安装相关依赖4、 执行cmake5、编译安装6、测试 opencv gpu版本编译&#xff0c;实现硬解码&#xff0c;加速rtsp视频流读取 前置条…...

数据分析问答总结

一、SQL窗口函数 1.是什么 OLAP&#xff08;Online Anallytical Processing联机分析处理&#xff09;&#xff0c;对数据库数据进行实时分析处理。 2.基本语法&#xff1a; <窗口函数>OVER &#xff08;PARTITION BY <用于分组的列名> ORDER BY <用于排序的…...

Python学习笔记_实战篇(二)_django多条件筛选搜索

多条件搜索在很多网站上都有用到&#xff0c;比如京东&#xff0c;淘宝&#xff0c;51cto&#xff0c;等等好多购物教育网站上都有&#xff0c;当然网上也有很多开源的比楼主写的好的多了去了&#xff0c;仅供参考&#xff0c;哈哈 先来一张效果图吧&#xff0c;不然幻想不出来…...

【生态经济学】利用R语言进行经济学研究技术——从数据的收集与清洗、综合建模评价、数据的分析与可视化、因果推断等方面入手

查看原文>>>如何快速掌握利用R语言进行经济学研究技术——从数据的收集与清洗、综合建模评价、数据的分析与可视化、因果推断等方面入手 近年来&#xff0c;人工智能领域已经取得突破性进展&#xff0c;对经济社会各个领域都产生了重大影响&#xff0c;结合了统计学、…...

xml中的vo是干什么用的

在Java中&#xff0c;VO&#xff08;Value Object&#xff09;是一种常见的设计模式&#xff0c;用于表示纯粹的数据对象。VO 通常用于在不同层或模块之间传递数据&#xff0c;并且它们的主要目的是封装和组织数据&#xff0c;而不包含业务逻辑。 VO 在Java中的具体作用有以下…...

现代企业数据泄露的原因分析与建议

近年来&#xff0c;随着信息技术的飞速发展&#xff0c;数据已经成为现代企业不可或缺的发展资源。然而&#xff0c;随之而来的数据泄露危机&#xff0c;给个人、企业甚至整个社会带来了巨大的风险与威胁。本文将综合探讨企业数据泄露的主要途径和原因&#xff0c;并提出防护建…...

飞天使-kubeadm安装一主一从集群

文章目录 安装前准备安装前准备配置yum源等安装前准备docker安装 安装kubeadm配置kubeadm验证集群 参考链接 安装前准备 cat >> /etc/hosts <<EOF 192.168.100.30 k8s-01 192.168.100.31 k8s-02 EOF hostnamectl set-hostname k8s-01 #所有机器按照要求修改 ho…...

string类写时拷贝

文章目录 1.string类拷贝构造函数的现代写法2.string类写时拷贝vs和g下string结构的不同vs下string的结构&#xff1a;g下string的结构 3.总结 1.string类拷贝构造函数的现代写法 string类拷贝构造函数的传统写法&#xff1a; string(const string& s){if (this ! &s)…...

QT VS编译环境无法打开包括文件type_traits

这问题&#xff0c;别人给的处理方法都是&#xff1a; 添加环境变量执行vsvars32.bat/vcvarsall.bat/vsdevcmd.bat重新安装QT项目&#xff1a;执行qmake。。。。 个人不推荐配置环境编译&#xff0c;除非你非常熟&#xff0c;因为配置环境变量需要你知道有哪些路径需要添加&a…...

深入浅出 TCP/IP 协议栈

TCP/IP 协议栈是一系列网络协议的总和&#xff0c;是构成网络通信的核心骨架&#xff0c;它定义了电子设备如何连入因特网&#xff0c;以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构&#xff0c;分别是应用层、传输层、网络层和链路层&#xff0c;每一层都呼叫它的下…...

Servlet+JDBC实战开发书店项目讲解第13讲:库存管理功能

ServletJDBC实战开发书店项目讲解第13讲&#xff1a;库存管理功能 在第13讲中&#xff0c;我们将讲解如何实现书店项目中的库存管理功能。该功能包括图书的添加、编辑、删除和查询等核心功能。下面是实现该功能的主要思路&#xff1a; 显示库存列表&#xff1a; 创建一个管理页…...

Shepherd: A Critic for Language Model Generation

本文是LLM系列的相关文章&#xff0c;针对《Shepherd: A Critic for Language Model Generation》的翻译。 Shepherd&#xff1a;语言模型生成的评价 摘要1 引言2 数据收集3 Shepherd模型4 评估反馈5 结果6 相关工作7 结论不足 摘要 随着大型语言模型的改进&#xff0c;人们对…...

【Python爬虫案例】爬取大麦网任意城市的近期演出!

老规矩&#xff0c;先上结果&#xff1a; 含10个字段&#xff1a; 页码&#xff0c;演出标题&#xff0c;链接地址&#xff0c;演出时间&#xff0c;演出城市&#xff0c;演出地点&#xff0c;售价&#xff0c;演出类别&#xff0c;演出子类别&#xff0c;售票状态。 代码演示…...

【框架】SpringBoot数组传参问题

方式一 前端以字符串形式传递idList&#xff0c;采用逗号拼接&#xff0c;后端直接使用list接收 // 前端代码 form: {otherParam: ,idList: [id1,id2].join(,) }//后端代码 // 在后端接收idList时&#xff0c;直接使用List<T> 就可以接收前端字符串&#xff08;默认使用…...

四川天蝶电子商务:2023短视频运营分析

短视频运营分析是指通过对短视频平台上的各种数据进行收集、整理和分析&#xff0c;以寻找出视频内容、用户活跃度、用户行为等方面的规律和问题&#xff0c;从而为短视频平台的运营决策提供依据。下面将从几个方面具体介绍短视频运营分析的重要性和方法。 首先&#xff0c;短…...

Git(5)已有项目连接远端git仓库

文章目录 初始化git连接远程仓库拉下仓库代码添加代码到本地仓库删除idea配置的git本地缓存提交代码推上去 初始化git git init连接远程仓库 git remote add origin 你的仓库地址拉下仓库代码 git pull --rebase origin master添加代码到本地仓库 git add .删除idea配置的g…...

Datawhale Django 后端开发入门 Task05 DefaultRouter、自定义函数

一、DefaultRouter是Django REST framework中提供的一个路由器类&#xff0c;用于自动生成URL路由。路由器是将URL与视图函数或视图集关联起来的一种机制。Django REST framework的路由器通过简单的配置可以自动生成标准的URL路由&#xff0c;从而减少了手动编写URL路由的工作量…...

JVM的元空间了解吗?

笔者近期在面试的时候被问到了这个问题&#xff0c;元空间也是Java8当时的一大重大革新&#xff0c;之前暑期实习求职的时候有专门看过&#xff0c;但是近期秋招的时候JVM相关的内容确实有点生疏了&#xff0c;故在此进行回顾。 结构 首先&#xff0c;我们应了解JVM的堆结构&a…...

WPS中的表格错乱少行

用Office word编辑的文档里面包含表格是正常的&#xff0c;但用WPS打开里面的表格就是错乱的&#xff0c;比如表格位置不对&#xff0c;或者是表格的前几行无法显示、丢失了。 有一种可能的原因是&#xff1a; 表格属性里面的文字环绕选成了“环绕”而非“无”&#xff0c;改…...

Pytorch-day09-模型微调-checkpoint

模型微调&#xff08;fine-tune)-迁移学习 torchvision微调timm微调半精度训练 起源&#xff1a; 1、随着深度学习的发展&#xff0c;模型的参数越来越大&#xff0c;许多开源模型都是在较大数据集上进行训练的&#xff0c;比如Imagenet-1k&#xff0c;Imagenet-11k等2、如果…...

leetcode304. 二维区域和检索 - 矩阵不可变(java)

前缀和数组 二维区域和检索 - 矩阵不可变题目描述前缀和代码演示 一维数组前缀和 二维区域和检索 - 矩阵不可变 难度 - 中等 原题链接 - 二维区域和检索 - 矩阵不可变 题目描述 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总…...

记一次oracle数据库迁移至mysql数据库(表同步)

目录 一、利用Navicat将oracle迁移至mysql数据库 1、建立数据传输 2、选择需要迁移的数据库跟目标库 3、数据传输选项 4、选择需要迁移表信息 二、迁移之后遇到的一些问题 1、大小写问题 2、数据库函数问题 3、sql语句是否使用空格隔开问题 4、关于子查询别命名问题 …...

打怪升级之从零开始的网络协议

序言 三个多月过去了&#xff0c;我又来写博客了&#xff0c;这一次从零开始学习网络协议。 总的来说&#xff0c;计算机网络很像现实生活中的快递网络&#xff0c;其最核心的目标&#xff0c;就是把一个包裹&#xff08;信息&#xff09;从A点发送到B点去。下面是一些共同的…...

Lnton羚通算法算力云平台【PyTorch】教程:torch.nn.Softsign

torch.nn.Softsign 原型 CLASS torch.nn.Softsign() 图 代码 import torch import torch.nn as nnm nn.Softsign() input torch.randn(4) output m(input)print("input: ", input) print("output: ", output)# input: tensor([ 0.0046, -0.4135, -2…...

读SQL学习指南(第3版)笔记02_数据类型

1. 命令行工具 1.1. mysql -u root -p; 1.2. mysql&#xff1e; show databases; 1.3. mysql&#xff1e; use sakila; 1.4. mysql&#xff1e; SELECT now(); 1.4.1. now()是MySQL的内建函数 1.4.2. 返回当前日期和时间 1.5. mysql&#xff1e; SELECT now() FROM dual…...

易思智能物流无人值守系统文件上传漏洞复现

0x01 产品简介 易思无人值守智能物流系统是一款集成了人工智能、机器人技术和物联网技术的创新产品。它能够自主完成货物存储、检索、分拣、装载以及配送等物流作业&#xff0c;帮助企业实现无人值守的智能物流运营&#xff0c;提高效率、降低成本&#xff0c;为现代物流行业带…...

git获取远端分支和merge

要将远程分支拉取到本地&#xff0c;你可以使用以下命令&#xff1a; 1. 首先&#xff0c;使用git fetch命令从远程仓库获取最新的分支信息&#xff1a; git fetch origin 这个命令将会将远程仓库origin的分支信息下载到本地。 2. 接下来&#xff0c;可以使用git checkout命…...

linux-进程

文章目录 1.先谈硬件冯诺依曼体系结构 2.再谈软件操作系统什么是操作系统&#xff1f;为什么要有操作系统&#xff1f;如何管理&#xff1f;系统调用 3.再谈进程那么具体Linux是怎么做的?指令 ps ajx 查看所有进程 非实时top 实时查看进程 相当于任务管理器ls /proc 内存级进程…...

整数数组区间的插入与删除

相似题参考&#xff1a; 56. Merge Intervals - 力扣&#xff08;LeetCode&#xff09;合并区间 57. 插入区间 - 力扣&#xff08;LeetCode&#xff09; 1272. 删除区间 package Jerry;import org.junit.Assert; import org.junit.Test;import java.util.ArrayList; import…...

Git标签

Git 中的标签&#xff0c;指的是某个分支某个特定时间点的状态(静态)。通过标签&#xff0c;可以很方便的切换到标记时的状态。 比较有代表性的是人们会使用这个功能来标记发布结点 (v1.0、v1.2等)。 下面是myatis-plus的标签: 1 标签相关命令 命令作用git tag查看标签&…...

建设银行门户网站/外贸做网站公司哪家好

据21世纪经济报道&#xff0c;广电总局7月14日下发的一则内部通知&#xff0c;禁止一些视频网站与机顶盒厂商合作推出的机顶盒产品&#xff0c;接下来对智能电视的互联网内容监管条例也可能出台。 根据这则内部通知&#xff0c;广电总局要求互联网经机顶盒(DVD机等)向电视机终端…...

做网站需要几步/软文推广文章案例

Mermaid 实用教程 Mermaid 是一个用于画流程图、状态图、时序图、甘特图的库&#xff0c;使用 JS 进行本地渲染&#xff0c;广泛集成于许多 Markdown 编辑器中。 之前用过 PlantUML&#xff0c;但是发现这个东西的实现原理是生成 UML 的图片后上传服务端&#xff0c;每次再从…...

融媒体建设 政府门户网站/搜索引擎优化的内容包括

安装特殊符号输入器的时候出现&#xff1a; Componentsystray.ocx or one of its dependencies not correcyly registered;a file ismissing or invalid 有时候我们是需要输入一些特殊符号的&#xff0c;比如写论文等比较正式的文档时&#xff0c;还有数学公式的时候&#xff1…...

有什么做家纺的网站/福州百度网站快速优化

PGresult *PQexec(PGconn *conn, const char *command); PQexec接受const char *为参数&#xff0c;可是如果SQL中有中文等字符怎么办&#xff1f; 解决方法&#xff1a; 把含有中文的字符串转换成utf8编码的char *即可。本文转自 h2appy 51CTO博客&#xff0c;原文链接&#…...

做网站什么前端框架方便/百度推广联系方式

1问&#xff1a;当下一个新的GPU架构发布时&#xff0c;我必须重写我的CUDA内核吗?答复&#xff1a;不需要重写的&#xff0c;CUDA具有高层次的描述能力(抽象能力)&#xff0c;同时CUDA编译器生成的PTX代码也不是固定于特定硬件的。这样在运行的时候&#xff0c;驱动负责将PTX…...

华亮建设集团股份有限公司网站/今日热搜排行第一名

https://blog.csdn.net/u014552102/article/details/86700057 一、手机客户端操作&#xff1a; 首先在莹石商城官网https://www.ys7.com/下载“莹石云视频”手机客户端到手机安装。安装完成后&#xff0c;打开客户端&#xff0c;按照官方的摄像机操作说明书在手机端一步步进行…...