【红外】采集数据

【orin】米文动力 orin 使用体验 以及实操(雷达;摄像头)_米文+orin-CSDN博客

红外型号是IR-Pilot 640 41Z1GC,通过gsml连orin

首先,这个miivii文件下缺东西,features/gmsl_camera/samples里就缺东西,缺了两个文件夹。

所以我去新机器拷了新的miivii,完整的。然后打包成miwen.tar.gz,然后解压编译的。


miwen是我建的文件夹,把miwen.tar.gz解压生成的miivii文件夹放到了miwen里

sudo make 报错看着是缺opencv

因为正常装了opencv是这样的

但是我这个目录下只有python,没有opencv相关。

之所以不用find命令,是因为机器里容器里也安装了opencv,太长了,很难排查。


然后我在home下用源码编译的opencv

## 编译opencv源码

解压opencv.zip得到opencv-4.2.0文件夹

解压opencv_contrib.zip得到opencv_contrib-4.2.0文件夹

将opencv_contrib-4.2.0移动到opencv-4.2.0文件夹内

```
cd opencv-4.2.0
mkdir build
cd build/

export http_proxy=http://127.0.0.1:7890/ # 在容器内设置代理

cmake \
-DCUDA_nppicom_LIBRARY=stdc++ \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_ENABLE_NONFREE=1 \
-DBUILD_opencv_python2=1 \
-DBUILD_opencv_python3=1 \
-DWITH_FFMPEG=1 \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-DCUDA_ARCH_BIN=8.7 \
-DCUDA_ARCH_PTX=8.7 \
-DWITH_CUDA=1 \
-DENABLE_FAST_MATH=1 \
-DCUDA_FAST_MATH=1 \
-DWITH_CUBLAS=1 \
-DOPENCV_GENERATE_PKGCONFIG=1 \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.2.0/modules \
..


make -j4 # 四线程编译

sudo make install
```

源码编译opencv的时候出错

sudo apt-get install libboost-all-dev

之后编译成功,usr/local/lib下也出现opencv的库了


opencv编译后,接着编译gmsl

还是有报错

而Makefile里默认路径(老miivii文件夹)里只有两个so

去找新miivii发现有缺的这个so

所以我直接把opt下老miivii换成新的了

然后home下的miivii和opt下的miivii都sudo make 编译一下

没报错,看样子是过了

现在继续下一步,运行demo,报错了:缺一个so

先下一个locate工具

sudo apt-get install mlocate

sudo updatedb

还挺多,那就是没摸到,环境变量的原因了

export LD_LIBRARY_PATH=/home/nvidia/opencv/opencv/opencv-4.2.0/build/lib:/usr/local/lib:$LD_LIBRARY_PATH

再次测试

./cameras_opencv_demo -s 640x512 -d /dev/video0

成功!

注意

有段警告,缺东西,但可能无伤大雅,先跳过

nvidia@wk-orin:/opt/miivii/features/gmsl_camera/bin$ ./cameras_opencv_demo -s 640x512 -d /dev/video0
attestationVerify [13] succeed.
Opening camera...
[ WARN:0] global /home/nvidia/opencv/opencv/opencv-4.2.0/modules/videoio/src/cap_gstreamer.cpp (935) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1
Gtk-Message: 20:23:56.141: Failed to load module "canberra-gtk-module"

接下来把环境变量永久写进去

永久设置 LD_LIBRARY_PATH

如果需要永久设置 LD_LIBRARY_PATH,可以在用户的 .bashrc.profile 文件中添加以下行:

export LD_LIBRARY_PATH=/home/nvidia/opencv/opencv/opencv-4.2.0/build/lib:/usr/local/lib:$LD_LIBRARY_PATH

source ~/.bashrc 使其生效

搞定!

接着我要录制 ros 话题的红外图像。

我现在已经成功输出了红外图像,如何查找红外摄像头的信息呢

ls -l /dev/video*


openCV 转 ros话题发布出去

cv_bridge/Tutorials/ConvertingBetweenROSImagesAndOpenCVImagesPython - ROS Wiki

sRGB和RGB有什么区别?

  1. RGB

    • RGB 是一种加色模型,代表红(Red)、绿(Green)和蓝(Blue)三种基本颜色。在显示技术中,通过调整这三种颜色的不同强度可以产生各种各样的颜色。RGB 模型主要用于电子设备上,比如电视、计算机显示器和智能手机屏幕。
  2. sRGB

    • sRGB 是一种具体的色彩空间标准,它定义了一组特定的颜色,这些颜色可以通过 RGB 加色模型来实现。sRGB 是一种较为狭窄但非常普遍的色彩空间,它被广泛应用于网页设计、摄影和打印等领域。sRGB 是由微软和惠普等公司在1990年代末期制定的一个标准,目的是创建一个可以跨多种设备(包括监视器、打印机和扫描仪)的一致色彩语言。

我是sRGB还是mono8?

    BGR8 (bgr8):用于彩色图像,每个像素有三个通道(蓝、绿、红),每个通道占用 8 位。
    
    RGB8 (rgb8):用于彩色图像,每个像素有三个通道(红、绿、蓝),每个通道占用 8 位。
    
    灰度图像 (mono8):用于单通道灰度图像,每个像素只有一个通道,占用 8 位。

选择合适的编码格式

    彩色图像:
        如果你的图像数据是 BGR 格式(OpenCV 默认格式),你应该使用 bgr8 编码。
        如果你的图像数据是 RGB 格式,你应该使用 rgb8 编码。

    灰度图像:
        如果你的图像数据是灰度图像,你应该使用 mono8 编码。

ros_frame.step这个是什么

ros_frame.step 是 sensor_msgs/Image 消息中的一个字段,表示图像每一行的字节数。它是一个非常重要的字段,因为它影响到图像数据的解析和传输。

ros_frame.step 的含义
定义:

ros_frame.step 表示图像每一行的字节数。
它通常等于图像的宽度乘以每个像素的字节数。
计算方法:

对于彩色图像(如 bgr8 或 rgb8),每个像素有 3 个通道(R、G、B),每个通道占用 1 字节。
因此,对于宽度为 width 的图像,step 计算公式为:
python
step = width * channels
示例
假设图像宽度为 1920 像素,每个像素有 3 个通道(BGR 或 RGB),则 step 计算如下:

python
width = 1920
channels = 3
step = width * channels
对于 1920x1080 的 BGR 图像:

python
ros_frame.step = 1920 * 3
为什么需要 step?
内存对齐:

在某些情况下,图像数据可能会有额外的填充字节,以保证内存对齐。这些填充字节不会被显示,但会影响每一行的总字节数。
step 包含了这些额外的填充字节,确保数据正确解析。
跨平台兼容性:

不同的操作系统或硬件可能有不同的内存对齐要求。step 确保数据在不同平台上都能正确解析。

相关推荐
学不会•2 小时前
css数据不固定情况下,循环加不同背景颜色
前端·javascript·html
活宝小娜4 小时前
vue不刷新浏览器更新页面的方法
前端·javascript·vue.js
程序视点4 小时前
【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
前端·javascript·vue.js·typescript·vue·ecmascript
coldriversnow4 小时前
在Vue中,vue document.onkeydown 无效
前端·javascript·vue.js
我开心就好o4 小时前
uniapp点左上角返回键, 重复来回跳转的问题 解决方案
前端·javascript·uni-app
开心工作室_kaic5 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
刚刚好ā5 小时前
js作用域超全介绍--全局作用域、局部作用、块级作用域
前端·javascript·vue.js·vue
沉默璇年6 小时前
react中useMemo的使用场景
前端·react.js·前端框架
yqcoder7 小时前
reactflow 中 useNodesState 模块作用
开发语言·前端·javascript
2401_882727577 小时前
BY组态-低代码web可视化组件
前端·后端·物联网·低代码·数学建模·前端框架