ubuntu18.04运行DynaSLAM,实例分割+多视图几何+背景修复

博主电脑上之前就安装了ORB-SLAM2所需的环境,所以baseline为ORB-SLAM2的算法几乎都是直接./build.sh即可。
需要我们安装的内容就是python的环境,Pytorch或者TensorFlow,以及下载预训练模型和数据集。

一、安装ORB-SLAM2所需的库

  • C++11 or C++0x Compiler, Pangolin, OpenCV and Eigen3
  • Install boost libraries with the command sudo apt-get install libboost-all-dev.

DynaSLAM supports now both OpenCV 2.X and OpenCV 3.X.

二、安装Anaconda,创建python2.7的环境

  • Install python 2.7, keras2.0.9 and tensorflow1.14.0, and download the mask_rcnn_coco.h5 model from this GitHub repository: https://github.com/matterport/Mask_RCNN/releases.

在这里插入图片描述

三、克隆源代码

  • Clone this repo:
git clone https://github.com/BertaBescos/DynaSLAM.git
cd DynaSLAM
  • Place the mask_rcnn_coco.h5 model in the folder DynaSLAM/src/python/.

  • activate your python environment and execute this script python src/python/Check.py to evalutate its integrity.

  • sudo pip install scikit-image安装scikit-image

  • git clone https://github.com/waleedka/coco,cd coco/PythonAPIsudo make install安装pycocotools

在这里插入图片描述

运行完指令之后就把pycocotools文件夹整个复制到src/python/下。输入python src/python/Check.py验证MaskRCNN是否能正常工作。

在这里插入图片描述

总之,在编译mask-rcnn所需的库文件这里出现了很多报错,锻炼分析问题-解决问题的能力吧。

在这里插入图片描述

四、编译源代码

cd DynaSLAM
chmod +x build.sh
./build.sh

在这里插入图片描述

五、成功运行,完结散花

修改TUM3.yaml文件,ORB特征点数量为3000,否则初始化会失败。

./Examples/RGB-D/rgbd_tum ./Vocabulary/ORBvoc.txt ./Examples/RGB-D/TUM3.yaml ../TUM_DataSet/freiburg3_walking_xyz/ ../TUM_DataSet/freiburg3_walking_xyz/associations.txt ./mask ./output

运行的速度很慢,因为是在CPU上对每帧先进行实例分割再提取特征点和匹配,并且还会根据前后的关键帧修复背景。

在这里插入图片描述

六、过程记录

(tf114py27) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/DynaSLAM/coco$ cd PythonAPI/
(tf114py27) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/DynaSLAM/coco/PythonAPI$ sudo make install
[sudo] dzh 的密码: 
# install pycocotools to the Python site-packages
python setup.py build_ext install
running build_ext
running install
running build
running build_py
running install_lib
creating /usr/local/lib/python2.7/dist-packages/pycocotools
copying build/lib.linux-x86_64-2.7/pycocotools/_mask.so -> /usr/local/lib/python2.7/dist-packages/pycocotools
copying build/lib.linux-x86_64-2.7/pycocotools/cocoeval.py -> /usr/local/lib/python2.7/dist-packages/pycocotools
copying build/lib.linux-x86_64-2.7/pycocotools/coco.py -> /usr/local/lib/python2.7/dist-packages/pycocotools
copying build/lib.linux-x86_64-2.7/pycocotools/__init__.py -> /usr/local/lib/python2.7/dist-packages/pycocotools
copying build/lib.linux-x86_64-2.7/pycocotools/mask.py -> /usr/local/lib/python2.7/dist-packages/pycocotools
byte-compiling /usr/local/lib/python2.7/dist-packages/pycocotools/cocoeval.py to cocoeval.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/pycocotools/coco.py to coco.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/pycocotools/__init__.py to __init__.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/pycocotools/mask.py to mask.pyc
running install_egg_info
Writing /usr/local/lib/python2.7/dist-packages/pycocotools-2.0.egg-info
(tf114py27) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/DynaSLAM$ ./Examples/RGB-D/rgbd_tum ./Vocabulary/ORBvoc.txt ../TUM_DataSet/TUM3.yaml ../TUM_DataSet/freiburg3_walking_xyz/ ../TUM_DataSet/freiburg3_walking_xyz/associations.txt ./mask ./output
nImages: 633
Loading Mask R-CNN. This could take a while...
Importing Mask R-CNN Settings...
Using TensorFlow backend.
2023-05-14 11:22:28.304109: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2023-05-14 11:22:28.333932: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2199995000 Hz
2023-05-14 11:22:28.334409: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55a03614dc60 executing computations on platform Host. Devices:
2023-05-14 11:22:28.334430: I tensorflow/compiler/xla/service/service.cc:175]   StreamExecutor device (0): <undefined>, <undefined>
Initializing Mask RCNN network...
./src/python
WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:488: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:63: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:3626: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:3454: The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:1818: The name tf.image.resize_nearest_neighbor is deprecated. Please use tf.compat.v1.image.resize_nearest_neighbor instead.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:1204: calling reduce_max_v1 (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.
Instructions for updating:
keep_dims is deprecated, use keepdims instead
WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:1238: calling reduce_sum_v1 (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.
Instructions for updating:
keep_dims is deprecated, use keepdims instead
WARNING:tensorflow:From /home/dzh/slambook/DynaSLAM/src/python/model.py:315: The name tf.log is deprecated. Please use tf.math.log instead.WARNING:tensorflow:From /home/dzh/slambook/DynaSLAM/src/python/model.py:366: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.where in 2.0, which has the same broadcast rule as np.where
WARNING:tensorflow:From /home/dzh/slambook/DynaSLAM/src/python/model.py:390: calling crop_and_resize_v1 (from tensorflow.python.ops.image_ops_impl) with box_ind is deprecated and will be removed in a future version.
Instructions for updating:
box_ind is deprecated, use box_indices instead
WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:2990: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.
WARNING:tensorflow:From /home/dzh/slambook/DynaSLAM/src/python/model.py:746: py_func (from tensorflow.python.ops.script_ops) is deprecated and will be removed in a future version.
Instructions for updating:
tf.py_func is deprecated in TF V2. Instead, there are twooptions available in V2.- tf.py_function takes a python function which manipulates tf eagertensors instead of numpy arrays. It's easy to convert a tf eager tensor toan ndarray (just call tensor.numpy()) but having access to eager tensorsmeans `tf.py_function`s can use accelerators such as GPUs as well asbeing differentiable using a gradient tape.- tf.numpy_function maintains the semantics of the deprecated tf.py_func(it is not differentiable, and manipulates numpy arrays). It drops thestateful argument making all functions stateful.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:158: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.2023-05-14 11:22:32.947268: W tensorflow/compiler/jit/mark_for_compilation_pass.cc:1412] (One-time warning): Not using XLA:CPU for cluster because envvar TF_XLA_FLAGS=--tf_xla_cpu_global_jit was not set.  If you want XLA:CPU, either set that envvar, or use experimental_jit_scope to enable XLA:CPU.  To confirm that XLA is active, pass --vmodule=xla_compilation_cache=1 (as a proper command-line flag, not via TF_XLA_FLAGS) or set the envvar XLA_FLAGS=--xla_hlo_profile.
Initialated Mask RCNN network...
Creating net instance...
Loading net parameters...
Mask R-CNN loaded!DynaSLAM Copyright (C) 2018 Berta Bescos, University of Zaragoza.Input sensor was set to: RGB-DLoading ORB Vocabulary. This could take a while...
Vocabulary loaded!Camera Parameters: 
- fx: 0
- fy: 0
- cx: 0
- cy: 0
- k1: 0
- k2: 0
- p1: 0
- p2: 0
- fps: 30
- color order: RGB (ignored if grayscale)ORB Extractor Parameters: 
- Number of Features: 1000
- Scale Levels: 8
- Scale Factor: 1.2
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7Depth Threshold (Close/Far Points): -nan-------
Start processing sequence ...
Images in the sequence: 633Light Tracking not working because Tracking is not initialized...
New map created with 334 points
Light Tracking not working...
virtual int g2o::SparseOptimizer::optimize(int, bool): 0 vertices to optimize, maybe forgot to call initializeOptimization()
Light Tracking not working...
Track lost soon after initialisation, reseting...
System Reseting
Reseting Local Mapper... done
Reseting Loop Closing... done
Reseting Database... done
Light Tracking not working because Tracking is not initialized...
New map created with 340 points
段错误 (核心已转储)
 #warning "Using deprecated NumPy API, disable it by " \^~~~~~~
In file included from /usr/include/python2.7/numpy/ndarraytypes.h:1809:0,from /usr/include/python2.7/numpy/ndarrayobject.h:18,from /home/dzh/slambook/DynaSLAM/include/Conversion.h:17,from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26,from /home/dzh/slambook/DynaSLAM/Examples/Stereo/stereo_kitti.cc:19:
/usr/include/python2.7/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]#warning "Using deprecated NumPy API, disable it by " \^~~~~~~
In file included from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26:0,from /home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_kitti.cc:20:
/home/dzh/slambook/DynaSLAM/include/Conversion.h:27:12: warning:int DynaSLAM::failmsg(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static int failmsg(const char *fmt, ...);^~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:45:18: warning: ‘PyObject* DynaSLAM::failmsgp(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static PyObject* failmsgp(const char *fmt, ...);^~~~~~~~
In file included from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26:0,from /home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_tum.cc:19:
/home/dzh/slambook/DynaSLAM/include/Conversion.h:27:12: warning:int DynaSLAM::failmsg(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static int failmsg(const char *fmt, ...);^~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:45:18: warning: ‘PyObject* DynaSLAM::failmsgp(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static PyObject* failmsgp(const char *fmt, ...);^~~~~~~~
In file included from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26:0,from /home/dzh/slambook/DynaSLAM/Examples/RGB-D/rgbd_tum.cc:19:
/home/dzh/slambook/DynaSLAM/include/Conversion.h:27:12: warning:int DynaSLAM::failmsg(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static int failmsg(const char *fmt, ...);^~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:45:18: warning: ‘PyObject* DynaSLAM::failmsgp(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static PyObject* failmsgp(const char *fmt, ...);^~~~~~~~
In file included from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26:0,from /home/dzh/slambook/DynaSLAM/Examples/Stereo/stereo_kitti.cc:19:
/home/dzh/slambook/DynaSLAM/include/Conversion.h:27:12: warning:int DynaSLAM::failmsg(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static int failmsg(const char *fmt, ...);^~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:45:18: warning: ‘PyObject* DynaSLAM::failmsgp(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static PyObject* failmsgp(const char *fmt, ...);^~~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:25:18: warning: ‘DynaSLAM::opencv_error’ defined but not used [-Wunused-variable]static PyObject* opencv_error = 0;^~~~~~~~~~~~
In file included from /usr/include/python2.7/numpy/ndarrayobject.h:27:0,from /home/dzh/slambook/DynaSLAM/include/Conversion.h:17,from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26,from /home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_kitti.cc:20:
/usr/include/python2.7/numpy/__multiarray_api.h:1453:1: warning:int _import_array()’ defined but not used [-Wunused-function]_import_array(void)^~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:25:18: warning: ‘DynaSLAM::opencv_error’ defined but not used [-Wunused-variable]static PyObject* opencv_error = 0;^~~~~~~~~~~~
In file included from /usr/include/python2.7/numpy/ndarrayobject.h:27:0,from /home/dzh/slambook/DynaSLAM/include/Conversion.h:17,from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26,from /home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_tum.cc:19:
/usr/include/python2.7/numpy/__multiarray_api.h:1453:1: warning:int _import_array()’ defined but not used [-Wunused-function]_import_array(void)^~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:25:18: warning: ‘DynaSLAM::opencv_error’ defined but not used [-Wunused-variable]static PyObject* opencv_error = 0;^~~~~~~~~~~~
In file included from /usr/include/python2.7/numpy/ndarrayobject.h:27:0,from /home/dzh/slambook/DynaSLAM/include/Conversion.h:17,from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26,from /home/dzh/slambook/DynaSLAM/Examples/RGB-D/rgbd_tum.cc:19:
/usr/include/python2.7/numpy/__multiarray_api.h:1453:1: warning:int _import_array()’ defined but not used [-Wunused-function]_import_array(void)^~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:25:18: warning: ‘DynaSLAM::opencv_error’ defined but not used [-Wunused-variable]static PyObject* opencv_error = 0;^~~~~~~~~~~~
In file included from /usr/include/python2.7/numpy/ndarrayobject.h:27:0,from /home/dzh/slambook/DynaSLAM/include/Conversion.h:17,from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26,from /home/dzh/slambook/DynaSLAM/Examples/Stereo/stereo_kitti.cc:19:
/usr/include/python2.7/numpy/__multiarray_api.h:1453:1: warning:int _import_array()’ defined but not used [-Wunused-function]_import_array(void)^~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_tum.cc: In function ‘int main(int, char**):
/home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_tum.cc:96:48: warning: ‘MaskNet’ may be used uninitialized in this function [-Wmaybe-uninitialized]maskRCNN = MaskNet->GetSegmentation(im,string(argv[4]),vstrImageFilenames[ni].replace(0,4,"")); //0 background y 1 foreground~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_kitti.cc: In function ‘int main(int, char**):
/home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_kitti.cc:97:48: warning: ‘MaskNet’ may be used uninitialized in this function [-Wmaybe-uninitialized]maskRCNN = MaskNet->GetSegmentation(im,string(argv[4]),vstrImageFilenames[ni].replace(~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~vstrImageFilenames[ni].begin(), vstrImageFilenames[ni].end()-10,""));~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/Examples/RGB-D/rgbd_tum.cc: In function ‘int main(int, char**):
/home/dzh/slambook/DynaSLAM/Examples/RGB-D/rgbd_tum.cc:125:48: warning: ‘MaskNet’ may be used uninitialized in this function [-Wmaybe-uninitialized]maskRCNN = MaskNet->GetSegmentation(imRGB,string(argv[5]),vstrImageFilenamesRGB[ni].replace(0,4,""));~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 90%] Linking CXX executable ../Examples/Monocular/mono_kitti
[ 93%] Linking CXX executable ../Examples/Monocular/mono_tum
[ 96%] Linking CXX executable ../Examples/RGB-D/rgbd_tum
/home/dzh/slambook/DynaSLAM/Examples/Stereo/stereo_kitti.cc: In function ‘int main(int, char**):
/home/dzh/slambook/DynaSLAM/Examples/Stereo/stereo_kitti.cc:101:53: warning: ‘MaskNet’ may be used uninitialized in this function [-Wmaybe-uninitialized]maskRightRCNN = MaskNet->GetSegmentation(imRight, string(argv[4])+"/imRight",~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~vstrImageRight[ni].replace(vstrImageRight[ni].begin(), vstrImageRight[ni].end() - 10,""));~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[100%] Linking CXX executable ../Examples/Stereo/stereo_kitti
[100%] Built target mono_kitti
[100%] Built target mono_tum
[100%] Built target rgbd_tum
[100%] Built target stereo_kitti
Initialated Mask RCNN network...
Creating net instance...
Loading net parameters...
Mask R-CNN loaded!DynaSLAM Copyright (C) 2018 Berta Bescos, University of Zaragoza.Input sensor was set to: RGB-DLoading ORB Vocabulary. This could take a while...
Vocabulary loaded!Camera Parameters: 
- fx: 535.4
- fy: 539.2
- cx: 320.1
- cy: 247.6
- k1: 0
- k2: 0
- p1: 0
- p2: 0
- fps: 30
- color order: RGB (ignored if grayscale)ORB Extractor Parameters: 
- Number of Features: 3000
- Scale Levels: 8
- Scale Factor: 1.2
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7Depth Threshold (Close/Far Points): 2.98842-------
Start processing sequence ...
Images in the sequence: 633Light Tracking not working because Tracking is not initialized...
New map created with 842 points
MakeCurrent: Not available with non-pangolin window.
-------median tracking time: 2.69929
mean tracking time: 2.92223Saving camera trajectory to CameraTrajectory.txt ...trajectory saved!Saving keyframe trajectory to KeyFrameTrajectory.txt ...trajectory saved!

参考链接:https://blog.csdn.net/catpico/article/details/121055337
部署时间:21:20-24:00=2.5h,10:00-11:20=1.5h,总计4h,不包含ORB-SLAM2的环境。
文章完成时间:2023-05-14 12:47:45

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

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

相关文章

全网Bento和3D?点评2024年UX/UI设计趋势

2024年已经到来&#xff0c;对于UX/UI设计领域来说&#xff0c;这可能是过去若干年来UI / UX趋势最统一、最确定的一年。在接下来的文章中&#xff0c;笔者将在点评各个设计趋势的同时&#xff0c;分析现象背后的原因&#xff0c;并给新入行的设计师一些成长的建议。 什么是UI和…

【C语言】(26)预定义符号

核心预定义符号 __FILE__&#xff1a;字符串类型&#xff0c;表示当前源代码文件的名称。__LINE__&#xff1a;整型&#xff0c;表示当前源代码的行号。__DATE__&#xff1a;字符串类型&#xff0c;表示源文件被编译的日期&#xff0c;格式为 "MMM DD YYYY"。__TIME…

sqlserver union 和union all

在 SQL Server 中&#xff0c;UNION 和 UNION ALL 是用于合并两个或多个 SELECT 查询结果的操作符。 UNION: UNION 操作符用于合并两个或多个 SELECT 查询的结果&#xff0c;并去除重复的行。如果两个查询的结果集中有相同的行&#xff0c;则只会返回一个。语法如下&#xff1…

数据结构-邻接矩阵

介绍 邻接矩阵&#xff0c;是表示图的一种常见方式&#xff0c;具体表现为一个记录了各顶点连接情况的呈正方形的矩阵。 假设一共有以下顶点&#xff0c;其连接关系如图所示 那么&#xff0c;怎么表示它们之间的连接关系呢&#xff1f; 我们发现&#xff0c;各条边所连接的都…

你知道专业4S店神秘顾客是如何砍价的吗?

在汽车市场中&#xff0c;神秘顾客调研已经成为评估销售服务质量和客户体验的重要手段。通过神秘顾客的实地探访&#xff0c;品牌方和销售商可以获取真实、客观的反馈意见&#xff0c;从而针对性地改进服务。另外神秘顾客在执行过程中还可以通过砍价的方式了解该门店是否出现价…

C语言题目:一些简单的编程和递归题目

以下的题目的较难的点都在注释里面讲解清楚了 一. 1.喝汽水&#xff0c;1瓶汽水1元&#xff0c;2个空瓶可以换一瓶汽水&#xff0c;给20元&#xff0c;可以喝多少汽水&#xff08;编程实现&#xff09;。 代码实现&#xff1a; int main() {int money 20;int price 1;int e…

C#,二进制数的非0位数统计(Bits Count)的算法与源代码

计算一个十进制数的二进制表示有多少位1&#xff1f; 1 遍历法&#xff08;递归或非递归&#xff09; 使用循环按位统计1的个数。 2 哈希查表法 利用一个数组或哈希生成一张表&#xff0c;存储不同二进制编码对应的值为1的二进制位数&#xff0c;那么在使用时&#xff0c;只…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第10章 项目进度管理(五)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

华为OD机试真题- 攀登者2-2024年OD统一考试(C卷)

题目描述: 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。地图表示为一维数组,数组的索引代表水平位置,数组的高度代表相对海拔高度。其中数组元素0代表地面。例如[0,1,4,3,1,0,0,1,2,3,1,2,1,0], 代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5和8,9,1…

「优选算法刷题」:判定字符是否唯一

一、题目 实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同。 示例 1&#xff1a; 输入: s "leetcode" 输出: false 示例 2&#xff1a; 输入: s "abc" 输出: true限制&#xff1a; 0 < len(s) < 100 s[i]仅包含小写字母 二…

控制程序执行流程

资源 资源下载 【免费】突破密码认证程序&#xff08;修改函数返回地址&#xff09;资源-CSDN文库 资源内容 源码 在上一篇文章里 修改函数返回地址-CSDN博客 流程 对程序进行编译 思路 了解栈的情况&#xff08;函数地址、缓冲区偏移量&#xff09;程序中密码认证的地…

SHERlocked93 的 2023 年终总结

工作之后感觉一年一年过的太快&#xff0c;没有个记录连回忆都无从回忆起&#xff0c;之前的年终总结&#xff1a; SHERlocked93 的 2022 年终总结SHERlocked93 的 2021 年终总结SHERlocked93 的 2020 年终总结SHERlocked93 的 2019 年终总结SHERlocked93 的 2018 年终总结SHER…

js设计模式:发布订阅模式

作用: 也称之为消息队列模式,或者pubsub模式 发布者发布消息(也可以理解为调用某函数),订阅者会收到消息,并且发布者可以将一些参数传递给订阅者。 是一种常用的参数传递方法,经典的pubsub.js,vue2中的$bus等都是用的这种模式。 示例: <!DOCTYPE html> <html lan…

模仿 STM32 驱动开发格式实验

1.模仿 STM32 寄存器定义 为了开发方便&#xff0c; ST 官方为 STM32F103 编写了一个叫做 stm32f10x.h 的文件&#xff0c;在这个文件 里面定义了 STM32F103 所有外设寄存器&#xff0c;我们可以使用其定义的寄存器来进行开发&#xff0c;比如我 们可以用如下代码来初始…

kube-ovn默认vpc

下面图是kube-ovn默认vpc的拓扑 默认vpc kube-ovn安装完成后会自带一个默认vpc是ovn-cluster&#xff0c;并且会在这个默认vpc下创建ovn-default子网、join子网&#xff0c; 默认子网 ovn-default是ovn-cluster下的默认子网&#xff0c;在创建pod时没有指定子网时会使用这个…

Python编程中的异常处理

什么是异常&#xff1f; 程序错误&#xff08;errors&#xff09;有时也被称为程序异常&#xff08;exceptions&#xff09;&#xff0c;这是每个编程人员都会经常遇到的问题。在过去&#xff0c;当遇到这类情况时&#xff0c;程序会终止执行并显示错误信息&#xff0c;通常是…

JAVA之Java线程核心详解

Java线程核心 1.进程和线程 进程&#xff1a;进程的本质是一个正在执行的程序&#xff0c;程序运行时系统会创建一个进程&#xff0c;并且给每个进程分配独立的内存地址空间保证每个进程地址不会相互干扰。同时&#xff0c;在 CPU 对进程做时间片的切换时&#xff0c;保证进程…

QT安装-多版本

下载下载器 Qt开发技巧之快速安装多版本Qt_qt安装多版本-CSDN博客 无法下载存档bug-更换镜像源 windows安装QT时出现“无法下载存档……”解决办法 - lmore - 博客园 (cnblogs.com)

微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用

&#x1f3f7;️个人主页&#xff1a;鼠鼠我捏&#xff0c;要死了捏的主页 &#x1f3f7;️系列专栏&#xff1a;Golang全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&…

探索ES6:JavaScript的下一代标准

文章目录 探索ES6&#xff1a;JavaScript的下一代标准1. let 和 const2. Arrow Functions&#xff08;箭头函数&#xff09;3. 模板字符串4. 解构赋值5. 类和模块 探索ES6&#xff1a;JavaScript的下一代标准 ES6&#xff0c;也称为ECMAScript 2015&#xff0c;是JavaScript的…