当前位置:   article > 正文

手势识别mediapipe环境配置及使用_如何下载mediapipe

如何下载mediapipe

环境配置

1. 安装官方编译器bazel4.0.0

a.先安装一些基本环境
  1. sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python3
  2. sudo add-apt-repository ppa:webupd8team/java
  3. sudo apt-get update
  4. sudo apt install openjdk-11-jdk
b.github下载bazel4.0.0  注意下载后缀为-dist.zip的。

之后将下载下来的文件移动到自己想要的目录进行解压

  1. unzip bazel-4.0.0-dist.zip
  2. bash ./compile.sh
  3. sudo cp output/bazel /usr/local/bin

安装完成后运行代码检查版本信息,不报错的话就证明安装成功。

bazel version

能查看版本,bazel就按装完成了。

2. 安装Mediapipe

1.下载mediapipe

先选好版本,我用的v 0.8.5

https://github.com/google/mediapipe/tree/v0.8.5

2.安装依赖

  1. $sudo apt install -y python3-dev
  2. $sudo apt install -y cmake

3. 安装编译器protobuf-compiler

 https://github.com/protocolbuffers/protobuf/releases  下载

unzip protoc-3.19.1-linux-aarch_64.zip

然后将“bin”和include下的“google”复制到/mediapipe中。修改mediapipe/setup.py,将

protoc_command = [self._protoc, ‘-I.’, ‘–python_out=.’, source]

修改为

protoc_command = [self._protoc, ‘-I.’, ‘-I/usr/local/include’, ‘–python_out=.’, source]

编译proto文件报错:Missing output directives.

把上述改的代码再改为:

  1. protoc_command = [self._protoc, '-I.', '-I/usr/local/include', '--python_out=.', source]
  2. if subprocess.call(protoc_command) != 0:
  3. sys.exit(-1)

4. 进mediapipe目录删除不必要的OpenCV模块和链接器标志。

  1. cd mediapipe
  2. sed -i -e "/\"imgcodecs\"/d;/\"calib3d\"/d;/\"features2d\"/d;/\"highgui\"/d;/\"video\"/d;/\"videoio\"/d" third_party/BUILD
  3. sed -i -e "/-ljpeg/d;/-lpng/d;/-ltiff/d;/-lImath/d;/-lIlmImf/d;/-lHalf/d;/-lIex/d;/-lIlmThread/d;/-lrt/d;/-ldc1394/d;/-lavcodec/d;/-lavformat/d;/-lavutil/d;/-lswscale/d;/-lavresample/d" third_party/BUILD
如果自己已经安装opencv
  1. sed -i "s/x86_64-linux-gnu/aarch64-linux-gnu/g" third_party/opencv_linux.BUILD
  2. sed -i "s/x86_64-linux-gnu/aarch64-linux-gnu/g" third_party/ffmpeg_linux.BUILD

由于Jetson nx为aarch64的linux系统,因此需要将 third_party/opencv_linux.BUILD 和 third_party/ffmpeg_linux.BUILD 两个文件中所有的 x86_64-linux-gnu 更换为 aarch64-linux-gnu 。在Jetson中,OpenCV和FFMpeg的库都定义在/usr/lib/aarch64-linux-gnu文件夹下。

5、修改文件

打开third_party/BUILD,定位到

“WITH_ITT”: “OFF”,
“WITH_JASPER”: “OFF”,
“WITH_WEBP”: “OFF”,

在后面加上

“ENABLE_NEON”: “OFF”,
“WITH_TENGINE”: “OFF”,

6. 升级gcc

查看gcc版本

gcc -v
g++ -v

在终端中更新版本号的具体步骤,其中数字是你想更新的版本号,比如8或者其他版本。

  1. sudo apt-get update
  2. sudo apt-get install gcc-8
  3. sudo apt-get install g++-8
  4. cd /usr/bin
  5. sudo rm gcc g++
  6. sudo ln -s gcc-8 gcc
  7. sudo ln -s g++-8 g++

查看版本

7. 编译

耗时大约一小时

python3 setup.py gen_protos && python3 setup.py bdist_wheel

编译成功后将出现一个dist文件夹,里面存放了mediapipe的.whl文件,说明编译成功!!!

8. 运行Mediapipe

  1. python3 -m pip install cython
  2. python3 -m pip install numpy
  3. python3 -m pip install pillow
  4. python3 -m pip install mediapipe/dist/mediapipe-0.8-cp36-cp36-linux_aarch64.whl

9 中途各种错误 主要是编译过程中

弹出如下错误:
Error: file '@bazel_tools//tools/cpp:toolchain_utils.bzl' does not contain symbol 'use_cpp_toolchain' (did you mean 'find_cpp_toolchain'?)
把mediapipe-0.8.5文件夹下,WORKSPACE文件中的
  1. http_archive(
  2. name = "rules_cc",
  3. strip_prefix = "rules_cc-main",
  4. urls = ["https://github.com/bazelbuild/rules_cc/archive/main.zip"],
  5. )
改为
  1. _RULES_CC_GIT_COMMIT = "f95239adde29680236afa22b4abaf1d04234f61a"
  2. http_archive(
  3. name = "rules_cc",
  4. strip_prefix = "rules_cc-%s" % _RULES_CC_GIT_COMMIT,
  5. urls = ["https://github.com/bazelbuild/rules_cc/archive/%s.tar.gz" % _RULES_CC_GIT_COMMIT],
  6. )
中途会有一些报错是无法下载文件,手动下载,放进报错的隐藏文件夹中再次编译。
中途一直给我下载opencv-python-contrib,但是我的已经装过了,后来在终端虚拟环境下配置了下环境变量,让它能找到我的opencv
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

如果还是解决不了一直下opencv,去requirements里将opencv那个版本改成自己电脑上装的。

sed -i -e "s/opencv-contrib-python/opencv-python/g" requirements.txt

 或者直接删除下载opencv这个。


 
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号