手势识别mediapipe环境配置及使用

环境配置

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

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

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

unzip bazel-4.0.0-dist.zip
bash ./compile.sh
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.安装依赖

$sudo apt install -y python3-dev
$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.

把上述改的代码再改为:

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

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

cd mediapipe
sed -i -e "/\"imgcodecs\"/d;/\"calib3d\"/d;/\"features2d\"/d;/\"highgui\"/d;/\"video\"/d;/\"videoio\"/d" third_party/BUILD
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
sed -i "s/x86_64-linux-gnu/aarch64-linux-gnu/g" third_party/opencv_linux.BUILD
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或者其他版本。

sudo apt-get update
sudo apt-get install gcc-8
sudo apt-get install g++-8
cd /usr/bin
sudo rm gcc g++
sudo ln -s gcc-8 gcc
sudo ln -s g++-8 g++

查看版本

7. 编译

耗时大约一小时

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

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

8. 运行Mediapipe

python3 -m pip install cython
python3 -m pip install numpy
python3 -m pip install pillow
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文件中的
http_archive(
    name = "rules_cc",
    strip_prefix = "rules_cc-main",
    urls = ["https://github.com/bazelbuild/rules_cc/archive/main.zip"],
)
改为
_RULES_CC_GIT_COMMIT = "f95239adde29680236afa22b4abaf1d04234f61a"
http_archive(
    name = "rules_cc",
    strip_prefix = "rules_cc-%s" % _RULES_CC_GIT_COMMIT,
    urls = ["https://github.com/bazelbuild/rules_cc/archive/%s.tar.gz" % _RULES_CC_GIT_COMMIT],
)
中途会有一些报错是无法下载文件,手动下载,放进报错的隐藏文件夹中再次编译。
中途一直给我下载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这个。


 
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值