6.KCF物体追踪(已有源码、Astra Pro Plus环境已搭好)

本文讲述了作者在编译OpenCV时遇到的cvIplImage类型未声明的问题,以及如何通过调整OpenCV版本和设置环境变量CAMERA_TYPE来解决运行launch文件时的错误。
摘要由CSDN通过智能技术生成

1.编译源码所在工作空间时报错:

‘cvIplImage’ was not declared in this scope

在这里插入图片描述

错误本身含义:编译器在当前作用域内找不到名为cvIplImage的类型声明。
去网上搜索,说是当前opencv版本没有cvIplImage()这个函数。

我的opencv版本是(查看版本方法如图):

在这里插入图片描述

大家普遍两种解决方法:
①在出错的.cpp文件中增加头文件(该法对我无用):

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc_c.h>
#include <opencv2/imgproc/types_c.h>
#include <opencv2/highgui/highgui_c.h>

②卸载原来的opencv版本,重新下载新的(版本更低的)opencv。
但到底要低到多少呢,我没有找到明确的说法。
而且网上安装opencv指定版本的方法一堆,基本都有很多步骤,十分麻烦,过程中也容易出错。
我想直接pip3 install opencv-python==(版本号),但下载过程总是卡很久。

在这里插入图片描述

这种感觉似曾相识,于是我翻之前的博客,在3.部署yolov5和搭建Astra Pro深度相机环境(成功版)树莓派4B+Ubuntu18.04+ROS1-Melodic中遇到过一模一样的情况。
我简要再写一下(需要参考这篇):
<1>去https://pypi.org/找到符合自己python版本的opencv版本号
<2>安装对应版本
我安装的是3.4.18.65
而且它会直接帮你卸载之前的版本。

在这里插入图片描述

搞完opencv的安装后,再次尝试编译,‘cvIplImage’ was not declared in this scope的错误依旧存在。
于是又踏上搜寻之路,经历了漫长的寻找之后,终于找到了我的正解:
这篇,原理是一样的,只不过他的情况和我相反。
大概意思就是:
opencv3.8之前版用:IplImage z_ipl = z;
≥3.8用:IplImage z_ipl = cvIplImage(z);(这正是我的报错语句)
下图是我修改后的样子:
在这里插入图片描述

然后再次编译就成功啦。

在这里插入图片描述

2.运行launch文件时出错

忘记截图了……

报错内容有:
RLException: while processing /home/pi/orbbec_ws/src/orbbec-ros-sdk/launch/orbbec_camera.launch: Invalid tag: environment variable ‘CAMERA_TYPE’ is not set.
Arg xml is <arg doc="astraproplus,gemini2" name="camera_type" value="$(env CAMERA_TYPE)"/>(这段不放代码块好像显示不出来)
意思就是说:CAMERA_TYPE这个环境变量没有被设置。
于是去查看出错文件:
在这里插入图片描述
该launch文件会根据环境变量CAMERA_TYPE的值来选择astra.launch或gemini2.launch,以启动相应类型的相机。
我的相机是前者,于是我就去添加了该环境变量:
sudo vim ~/.bashrc
②在最后一行添加export CAMERA_TYPE=astraproplus
(i插入,esc退出编辑模式,:wq保存并退出)
③刷新:source ~/.bashrc

然后再次运行roslaunch astra_tracker KCFTracker.launch就可以成功出画面了:X,Y表示框内中心点在整个画面中的位置,Z表示距离,单位m。

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值