Opencv Jetson运行失败

2023-05-16

目录

1. 问题:

2. 环境

3. 代码

3. 怀疑方向

4. 方向错误(新现象)


1. 问题:

    在一个大型的项目里面,使用了opencv,且自己编译的时候添加了opencv cuda的支持,且编译的是libopencv_world,在一个比较充足资源的机器是能正常运行的:

2. 环境

    内存:32G

    显存:16G或者8G

    但是在Jetson平台只要调用opencv的接口,算法程序就卡住,其他线程运行OK,怀疑是opencv库太大导致的,但是opencv不是使用到哪个函数,才把相应的库加载到物理内存吗?

description: Computer
    product: NVIDIA Jetson Xavier NX Developer Kit
    serial: 1424621088797
    width: 64 bits
    capabilities: smp cp15_barrier setend swp tagged_addr_disabled

Jetson:

    内存:7G(内存显存共用)

3. 代码

仍然是上面的Jetson环境,自己写一个小的Demo,使用opencv库,仍然是上面的libopencv_world库:

cmake_minimum_required(VERSION 3.16)
project(demo)

set(DEPEND_HEADER_DIR /media/workspace/liuyb/opencv4.5.5/include)

set(DEPEND_LIB_DIR /media/workspace/liuyb/opencv4.5.5/arm)
#set(DEPEND_LIB opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
set(DEPEND_LIB opencv_world)

LINK_DIRECTORIES(/media/workspace/liuyb/opencv4.5.5/arm)

add_executable (demo main.cpp)

target_include_directories(demo  PUBLIC ${DEPEND_HEADER_DIR})
target_link_libraries(demo PUBLIC ${DEPEND_LIB})
#include <iostream>
#include "opencv2/opencv.hpp"
#include <vector>

using namespace std;

int main()
{
    vector<uint8_t> data(5000 * 5000, 128);

    cv::Mat cv_src = cv::Mat(5000, 5000, CV_8UC1, data.data());
    cv::Mat cv_dst;
    cv::resize(cv_src, cv_dst, {5000 * 2, 5000});

    cv::imwrite("dst.tif", cv_dst);
    return 0;
}

3. 怀疑方向

编译后,查看应用程序的依赖库:

 

 

 感觉所有的库都显示依赖了

strace demo查看,好像也将一些没有用的给映射进来了,下面是映射的所有库吗

这个简单的Demo是能正常运行的,但是那个大型的程序,运行失败,那个程序运行气起来非常消耗内存,是不是因为剩余的可用内存太小,所以导致前面的问题。

 上面是没有使用opencv时的内存情况

将项目中使用libopencv_world的位置,修改为具体的三个库:

set(DEPEND_LIB opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)

运行,发现还是不行,可是这三个库的大小加起来也才6M左右,为什么不行呢?

4. 方向错误(新现象)

    前面开始以为是内存不足,但是在另外一台内存很充足(32G)的机器上,运行同样出问题,之前内存很小的平台是无法进行gdb的,这个32G平台可以GDB,且死在了cv::resize的一个cv::Mat初始化的位置

        后来发现,jeston平台是自带opencv的,版本是4.2.0,使用系统自带的opencv库,运行时OK的,但是自己编译的版本(自己本来就是在jetson平台上编译的)就不行,奇怪。

        发现另外一个扩展库IMT.so,也用到的opencv,不过在好的平台(自己编译opencv能正常运行的平台)发现这个扩展库IMT.so和自己的库使用的opencv是同一个版本的,但是在jetson平台,IMT.so使用的是4.2.0版本的库文件,自己使用的仍然是4.5.5的

5. 原因

        根据4中查看到的异常现象,两个库使用的opencv版本不一致,会不会导致这个问题,尝试将库版本统一成4.2.0的(自己编译),为了排除干扰,将系统中的opencv库去掉,编译运行,OK

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Opencv Jetson运行失败 的相关文章

  • 如何使用 Python 3 在 OpenCV 3 上正确加载 cv2.KeyPoint 和描述符?

    有一天 我不得不恢复一个使用 OpenCV 3 和 Python 2 7 的旧项目 在此代码中 要加载 cv2 KeyPoint 我执行以下操作 import numpy as np import cPickle import cv2 ke
  • ECC 导致多光谱图像的图像对齐失败

    我正在尝试将 RGB 图像与 IR 图像 单通道 对齐 目标是创建 4 通道图像 R G B IR 为了做到这一点 我正在使用cv2 findTransformECC如中所述这个非常简洁的指南 https learnopencv com i
  • 在 python + openCV 中使用网络摄像头的问题

    我正在使用以下代码使用 openCV python 访问我的网络摄像头 import cv cv NamedWindow webcam feed cv CV WINDOW AUTOSIZE cam cv CaptureFromCAM 1 然
  • 使用 cvcreateimage 使用 opencv 创建简单的黑色图像

    来自 OpenCV 新手的非常基本的问题 我只想创建一个图像 每个像素设置为0 黑色的 我在 main 函数中使用了以下代码 IplImage imgScribble cvCreateImage cvSize 320 240 8 3 我得到
  • 构建 OpenCV 时出错 :: MonitorFromRect 未在此范围内声明

    我试图建立OpenCV version 2 4 8与它一起使用CodeBlocks and MinGw 我按照以下指示进行操作here http kevinhughes ca tutorials opencv install on wind
  • 使用 Azure 机器学习检测图像中的符号

    4年前我发帖这个问题 https stackoverflow com q 6999920 411094不幸的是 得到的一些答案超出了我的技能水平 我刚刚参加了一次构建巡演会议 他们在会上谈论了机器学习 这让我想到了使用 ML 来解决我的问题
  • 从索贝尔确定图像梯度方向?

    我正在尝试使用 openCV 的 Sobel 方法的结果来确定图像梯度方向 我知道这应该是一个非常简单的任务 我从此处复制了许多资源和答案中的方法 但无论我做什么 所得方向始终在 0 57 度之间 我希望范围为 0 360 我相信所有的深度
  • 从视频/图像中提取元数据

    我从 IP 摄像机获取 MJPEG 流 我正在查看该流并将其保存在计算机上 可以找到我的操作代码here https stackoverflow com questions 21702477 how to parse mjpeg http
  • OpenCV:使用 StereoCamera 系统对颜色标记进行 3D 姿态估计

    我有一个立体摄像系统并使用两者正确校准它 cv calibrateCamera and cv stereoCalibrate My reprojection error似乎没问题 凸轮0 0 401427 凸轮1 0 388200 立体声
  • 如何将图像从 np.uint16 转换为 np.uint8?

    我正在创建一个图像 image np empty shape height width 1 dtype np uint16 之后我将图像转换为 BGR 模型 image cv2 cvtColor image cv2 COLOR GRAY2B
  • 有人曾经在 MacOS 10.6 上使用过 OpenCV 和 Python 2.7 吗?

    在过去的 6 个月里 我一直断断续续地尝试让 OpenCV 在 MacOS 上与 Python 配合使用 每次有新版本发布时 我都会再次尝试并失败 我已经尝试过 64 位和 32 位 并且 xcode gcc 和 gcc 都是通过 macp
  • 对同色像素块的边界进行着色

    我有一张有 5 种不同颜色的图像 在这种情况下 随机生成 w h 40 27 img Image new RGB w h pixels img load available colors r 255 13 18 b 72 64 255 y
  • OpenCV 机器学习算法的 CSV 格式

    OpenCV 中的机器学习算法似乎使用以 CSV 格式读取的数据 参见示例这个 cpp文件 https code ros org trac opencv browser trunk opencv samples c tree engine
  • OpenCV 读取视频文件时内存不足

    此示例从文件中读取视频cv2 VideoCapture在 python OpenCV 中内存不足 import cv2 cap cv2 VideoCapture file mp4 while True ret frame cap read
  • 如何确定透视变换后的点在新图像平面中的位置?

    我使用 OpenCV Python Numpy 图像中有三个点 我知道这些点的确切位置 P1 P2 N1 我要将图像转换为另一个视图 例如 我将透视图转换为侧视图 如果这样做 我将无法获得图像平面中这三个点的确切位置 我应该以一种可以获得这
  • 将yuv420p原始数据转换为opencv图像

    我有来自 rtmp 服务器的原始数据 像素格式为 yuv420p 我使用管道来读取数据 但我不知道如何将原始数据解码为图像 command ffmpeg command extend loglevel fatal i rtmp localh
  • 使用 pygtk3 将 GUI 窗口添加到 python opencv2 程序

    我已经使用Python和Opencv2完成了一个程序 现在 我想向我的程序添加一个 GUI 窗口 我对 PyGtk3 有一些经验 因此 我修改了代码以采用 PyGtk3 但是 我遇到了错误 因此 我尝试了一个简单的程序来找出实际的错误 我的
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • OpenCV:将垫子除以标量的最简单方法是什么

    我认为标题中已经包含了很多内容 显然我可以迭代和划分 但我认为有一种内置的方法 我看见cvConvertScale但这不适用于类型cv Mat 我知道标量乘法的缩放运算 cv Mat M float alpha cv Mat Result

随机推荐