【记录一个问题】linux + opencv + gpu视频解码,好不容易编译通过,运行又coredump了
1.首先编译了opencv + cuda
编译选项中使用了以下关于cuvid库的内容:
//"nvcuvid" library
CUDA_nvcuvid_LIBRARY:FILEPATH=/usr/local/lib/libnvcuvid.so
//Path to a library.
CUDA_rt_LIBRARY:FILEPATH=/usr/local/cuda-9.0/lib64/libcudart_static.a
//Include NVidia Video Decoding library support
WITH_NVCUVID:BOOL=ON
2.下载了这个opencv + cuvid视频解码例子:
https://github.com/opencv/opencv/blob/master/samples/gpu/video_reader.cpp
编译和链接命令行:
g++ -c video_reader.cpp -o video_reader.o -g -I"/home/admin/opencv/2019-05-09_cuda/include/opencv4/" -std=c++11 g++ -o video_reader video_reader.o -L"/home/admin/opencv/2019-05-09_cuda/lib64/" -lopencv_core -lopencv_videoio -lopencv_cudacodec -lopencv_imgproc -lopencv_imgcodecs -lopencv_flann -lopencv_img_hash -lopencv_photo -L"/usr/local/cuda/lib64/stubs" -lcuda -lcublas -L"/usr/local/cuda/lib64" -lcudart -L"/usr/local/lib/" -lnvcuvid -lz -ldl -lpthread -lopencv_imgcodecs -lopencv_core -lopencv_imgcodecs -L"/home/admin/opencv/2019-05-09_cuda/lib64/opencv4/3rdparty" -lIlmImf -lopencv_core -lopencv_imgproc
3. 运行程序,出现coredump,GPU驱动的版本是 384.81
./video_reader stand_input.mp4
Program received signal SIGSEGV, Segmentation fault.
堆栈信息如下:
(gdb) bt
#0 0x00000000007eb4aa in cv::cudacodec::detail::CuvidVideoSource::CuvidVideoSource (
this=0x1731810, fname=...)
at /home/admin/opencv/opencv_contrib-master/modules/cudacodec/src/cuvid_video_source.cpp:63
#1 0x00000000007e6943 in cv::cudacodec::createVideoReader (filename=...)
at /home/admin/opencv/opencv_contrib-master/modules/cudacodec/src/video_reader.cpp:206
#2 0x000000000040e0cb in main (argc=2, argv=0x7fffffffe5a8) at video_reader.cpp:33
(gdb) f 0
#0 0x00000000007eb4aa in cv::cudacodec::detail::CuvidVideoSource::CuvidVideoSource (
this=0x1731810, fname=...)
at /home/admin/opencv/opencv_contrib-master/modules/cudacodec/src/cuvid_video_source.cpp:63
63 CUresult cuRes = cuvidCreateVideoSource(&videoSource_, fname.c_str(), ¶ms);
4. 搜索了一下,这篇帖子貌似提供了解决办法:
https://github.com/opencv/opencv/issues/10201
'Segmentation fault' with gpu video decoding #10201
下一步尝试自己下载一个 Video_Codec_SDK 库来替换系统自带的版本。
====================
2019-05-12补充:
按照以上帖子的提示,下载 Video_Codec_SDK_8.0.14.zip
unzip Video_Codec_SDK_8.0.14.zip
/home/admin/cuvid/Video_Codec_SDK_8.0.14/Samples
make
# make 出现错误,没关系, dynlink_nvcuvid.o生成就好了
代码的头文件中include Video_Codec_SDK_8.0.14/Samples/common/inc/dynlink_nvcuvid.h
然后代码中加上:cuda_res = cuvidInit(0);
最后,链接的路径中加上: "Video_Codec_SDK_8.0.14/Samples/NvDecodeGL/dynlink_nvcuvid.o" -L"/usr/local/nvidia/lib64/" -lnvcuvid
运行成功
然后又遇到了GpuMat的格式问题,请看下一篇!
【记录一个问题】linux + opencv + gpu视频解码,好不容易编译通过,运行又coredump了的更多相关文章
- 【记录一个问题】opencv官网的opencv android sdk使用opencl并未用到GPU
UMat u_mat;mat.copyTo(u_mat);cv::cvtColor(u_mat, cv::BGR2GARY);这样的代码反复执行,并未发现GPU占用提升.执行时间与不使用UMat相当. ...
- 【记录一个问题】opencv + cuda编译release版本后,链接出现奇怪的符号
链接出现以下信息: 1 /home/admin/opencv/20190610_cuda_release/lib64/libopencv_core.a(ocl.cpp.o): In function ...
- 【记录一个问题】opencv中 cv::dft()与cv::ocl_dft()计算的结果相差较大
以一个跟踪算法来测试: 使用cv::dft(), 矩阵未按照2次幂对齐,最终跟踪平均准确率 84.3% 使用cv::dft(),矩阵使用cv::copyMakeBorder对齐,最终跟踪平均准确率 8 ...
- 【记录一个问题】opencv中使用UMat类,在析构的时候出现refcount == 0的断言错误
发生coredump时的错误信息如下: terminate called after throwing an instance of 'cv::Exception' what(): OpenCV(4. ...
- Linux下C程序的编译,运行,及调试
先查看linux有没有gcc 和 gdb $ gcc -v $ gdb -v 如果没有安装gcc,可以 $ yum install gcc 要获取管理员权限才能安装软件,$ su root (有的li ...
- Linux中源码安装编译Vim
Linux中源码安装编译Vim Linux下学习工作少不了编辑器,Vim能使你的工作效率成倍的提高.在Ubuntu上安装vim使用命令直接安装很简单.但有时还是需要自己手动编译安装.例如: vim中的 ...
- 20140403 opencv GPU安装
1. 查看本机配置,查看显卡类型是否支持NVIDIA GPU,本机显卡为NVIDIA GeForce 8400 GS: 2. 从http://www.nvidia.cn/Download/inde ...
- linux DRM GPU scheduler 笔记
内核文档: Overview The GPU scheduler provides entities which allow userspace to push jobs into softw ...
- Linux 查看GPU状态
Linux 查看GPU状态 nvidia-smi nvidia-smi是NVIDIA自带的一个命令可以详细的展示显卡的运行状态. gpustat gpustat是github上开源的一个小工具,对于v ...
随机推荐
- LuoguP4420 [COCI2017-2018#1] Tetris 题解
Content 有一个 \(n\times m\) 的拼图,摆上了几块俄罗斯方块图形.已知这些图形可能包含以下这五种(可以旋转),求出下列类型的俄罗斯方块图形数量. 数据范围:\(1\leqslant ...
- HTML行内级元素之间的空格问题
HTML行内级元素之间的空格问题 1.为什么元素之间会产生空格? 在编写行内级元素(包括inline-block元素)的代码之间如果有空格(换行),在浏览器上就会显示元素之间有空格. 示例代码如下: ...
- 痞子衡嵌入式:揭秘i.MXRT1170上用J-Link连接复位后PC总是停在0x223104的原因
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170上安全调试策略实现对JLink调试的影响. 痞子衡之前写过一篇旧文 <i.MXRT600的ISP模式下用J-L ...
- 【LeetCode】281. Zigzag Iterator 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 deque 日期 题目地址:https://leetc ...
- 【LeetCode】1042. Flower Planting With No Adjacent 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 图 日期 题目地址:https://leetcode ...
- 【LeetCode】1002. Find Common Characters 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcod ...
- 【LeetCode】649. Dota2 Senate 解题报告(Python)
[LeetCode]649. Dota2 Senate 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地 ...
- 【LeetCode】779. K-th Symbol in Grammar 解题报告(Python)
[LeetCode]779. K-th Symbol in Grammar 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingz ...
- 第八个知识点:交互式的定义如何帮助计算和IP类问题是什么
第八个知识点:交互式的定义如何帮助计算和IP类问题是什么 这是系列中的第8篇,我们主要讨论计算中交互作用的用处和IP类问题是什么. 为了回答这些问题,我们首先给交互式证明系统一个简洁的介绍.众所周知, ...
- gojs 如何实现虚线(蚂蚁线)动画?
在绘制 dag 图时,通过节点和来箭头的连线来表示节点彼此之间的关系.而节点常常又带有状态,为了更好的表示节点之间的流程关系,loading 状态的节点,与后续节点之间,需要用 动画着的虚线 表示,表 ...