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运行失败 的相关文章

  • 如何使用requirements.txt 在 Heroku python Web 应用程序中安装 Dlib?

    我构建了一个涉及机器学习的 Python Flask Web API 但在 Heroku 上部署它时遇到了很多挫折 问题是 我的应用程序依赖于 Dlib 一个库 我似乎找不到在我的 Heroku 服务器中安装的方法 我正在试图解决这个问题
  • bitblt 在 Windows 10 版本 1703 上失败 (15063.138)

    使用 Visual Studio 2017 vc141 以下代码应该从前游戏窗口获取屏幕截图 但现在它返回黑色和空白图像 唯一的游戏问题 尝试过 OpenGL 和 Vulkan ogl 返回黑色 vulkan 返回白色 在升级到 Windo
  • 查找彼此接近的对象边界

    我正在研究一个计算机视觉问题 其中问题的第一步是找到物体彼此靠近的位置 例如 在下图中 我感兴趣的是找到灰色标记的区域 Input Output 我目前的方法是首先反转图像 然后通过侵蚀进行形态梯度跟随 然后删除一些不感兴趣的轮廓 脚本如下
  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • 如何在opencv python中为图像添加边框

    如果我有如下图所示的图像 如何在图像周围添加边框 以便最终图像的整体高度和宽度增加 但原始图像的高度和宽度保持在中间 下面的代码添加了一个大小恒定的边框10像素到原始图像的所有四个边 对于颜色 我假设您想要使用背景的平均灰度值 这是我根据图
  • 如何设置K-means openCV c++的初始中心

    我正在尝试使用 OpenCv 和 Kmeans 对图像进行分割 我刚刚实现的代码如下 include opencv2 objdetect objdetect hpp include opencv2 highgui highgui hpp i
  • 在加载“cv2”二进制扩展期间检测到递归

    我有一个小程序 在 pyinstaller 编译后返回 opencv 错误 但无需编译即可工作 我在 Windows 10 上使用 Python 3 8 10 Program 导入 pyautogui将 numpy 导入为 np导入CV2
  • Python中最相似的人脸识别

    如何使用Python和OpenCV来查找面部相似 我已成功使用 OpenCV 和 Python 使用 Haar Cascades 从多张照片中提取人脸 我现在有一个图像目录 所有这些都是不同人的面孔 我想做的是拍摄一张样本图像 然后看看它最
  • 曲线/路径骨架二值图像处理

    我正在尝试开发一个可以处理图像骨架的路径 曲线的代码 我想要一个来自两点之间骨架的点向量 该代码在添加一些点后结束 我没有找到解决方案 include opencv2 highgui highgui hpp include opencv2
  • OpenCV 仅围绕大轮廓绘制矩形?

    第一次发帖 希望我以正确的方式放置代码 我正在尝试检测和计算视频中的车辆 因此 如果您查看下面的代码 我会在阈值处理和膨胀后找到图像的轮廓 然后我使用 drawContours 和矩形在检测到的轮廓周围绘制一个框 我试图在 drawCont
  • 来自连接到远程机器的相机的 Opencv 流

    我正在用 python 开发一个 wx 应用程序 用于流式传输和显示来自两个不同网络摄像头的视频 这工作正常 但现在我需要在不同的场景中执行此操作 其中两个摄像头连接在通过网络连接的 Windows 上运行的单独计算机中 我的应用程序将在机
  • 如何将输出视频保存到 OpenCV 中的文件中

    我想将输出视频保存到文件中而不是显示它并尝试使用 cvcaptureimage 但仍然无法获得结果 include
  • BASH 脚本编译多个 C++ 文件 - OpenCV

    请参见在C 和OpenCV中调用其他文件中的函数 https stackoverflow com questions 24442836 call functions in other files in c and opencv 对于最初的问
  • 如何在 OpenCV 中从 YUV 文件读取帧?

    如何在 OpenCV 中从 YUV 文件读取帧 我编写了一个非常简单的 python 代码来从二进制文件读取 YUV NV21 流 import cv2 import numpy as np class VideoCaptureYUV de
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 为什么我无法在 Mac 12.0.1 (Monterey) 上使用 pip 安装 OpenCV? [复制]

    这个问题在这里已经有答案了 当我尝试使用 python pip 安装 OpenCV 时 它显示了以下内容 Remainder of file ignored Requirement already satisfied pip in Libr
  • 如何使用 python、openCV 计算图像中的行数

    我想数纸张 所以我正在考虑使用线条检测 我尝试过一些方法 例如Canny HoughLines and FLD 但我只得到处理过的照片 我不知道如何计算 有一些小线段就是我们想要的线 我用过len lines or len contours
  • OpenCV IP 相机应用程序崩溃 [h264 @ 0xxxxx] 访问单元中缺少图片

    我在 cpp 中有一个 opencv 应用程序 它使用 opencv 的简单结构捕获视频流并将其保存到视频文件中 它与我的网络摄像头完美配合 但是 当我运行它从 IP 摄像机捕获流时 它可能会在大约十秒后崩溃 我的编译命令是 g O3 IP
  • 在 Python 中将 OpenCV 帧流式传输为 HTML

    我正在尝试从 opencv Pyt hon 中的 URL 读取视频 然后逐帧处理它 然后将其发送到 HTML 页面 But I am only getting the first frame after that the program g
  • 将 4 通道图像转换为 3 通道图像

    我正在使用 OpenCV 2 4 6 我正在尝试将 4 通道 RGB IplImage 转换为 4 通道 HSV 图像 下面是我的代码 给出错误 OpenCV 错误 未知函数断言失败 我认为 cvCvtColor 支持 3 通道图像 有没有

随机推荐