Open piaolinzhe opened 1 year ago
cuda11.6 opencv4
编译出错,我现在的环境是cuda 12.0,opencv 4.7,vs 2022,是不是一定要改成同样的版本?看你的代码库里cusolver_utils.h 都属于cuda中的库,有改写么?
已启动生成...
1>------ 已启动生成: 项目: VideoStitching-CUDA-and-CPU, 配置: Debug x64 ------
1>Compiling CUDA source file ......\Desktop\projects\VideoStitching-CUDA-and-CPU\main.cu...
1>
1>C:\Users\XXX\source\repos\VideoStitching-CUDA-and-CPU>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\bin\nvcc.exe" -gencode=arch=compute_61,code=\"sm_61,compute_61\" -gencode=arch=compute_52,code=\"sm_52,compute_52\" --use-local-env -ccbin "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\HostX64\x64" -x cu -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -DWIN32 -DWIN64 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Fdx64\Debug\vc143.pdb /FS /Zi /RTC1 /MDd " -o C:\Users\XXX\source\repos\VideoStitching-CUDA-and-CPU\x64\Debug\main.cu.obj "C:\Users\XXX\Desktop\projects\VideoStitching-CUDA-and-CPU\main.cu"
1>C:\opencv-4.7.0\cudabuild\install\include\opencv2/xfeatures2d.hpp(1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>C:\opencv-4.7.0\cudabuild\install\include\opencv2/stitching/detail/warpers.hpp(235): warning #611-D: overloaded virtual function "cv::detail::PlaneWarper::buildMaps" is only partially overridden in class "cv::detail::AffineWarper"
1>
1>Remark: The warnings can be suppressed with "-diag-suppress
你是否已经安装了opencv contrib模块,并且编译了相应的cuda、xfeatures2d模块
是的,我编译opencv时,加上了cuda和xfeatures2d模块
那我也不太清楚了,我当时编译opencv的时候只支持vs2019前的版本,不够你可以先写一个cuda程序并且使用opencv gpu相关的函数测试一下你的cuda和opencv的安装是否正确
感谢回复,想确认一下cusolver_utils.h ,这个文件是原文件?还是你做过改写?我在cuda 12中未找到
这是cusolver库里面的,这是这个库的官网https://docs.nvidia.com/cuda/cusolver/index.html
最后用cuda11.6 opencv4.6 环境搭建成功。感谢
编译报错
videostitch.h(106): error: calling a host function("cv::Point
videostitch.h(106): error: identifier "cv::Point
videostitch.h(107): error: calling a host function("cv::Point
videostitch.h(107): error: identifier "cv::Point
videostitch.h(113): error: calling a host function("cv::Point
videostitch.h(113): error: identifier "cv::Point
videostitch.h(114): error: calling a host function("cv::Point
videostitch.h(114): error: identifier "cv::Point
videostitch.h(120): error: calling a host function("cv::Point
videostitch.h(120): error: identifier "cv::Point
videostitch.h(121): error: calling a host function("cv::Point
videostitch.h(121): error: identifier "cv::Point
哪里出问题呢
我没遇到过这个问题,可以检测一下你的项目配置是否正确,h文件有没有重复编译
之前的报错是opencv的版本问题,现在换了4.9的就不报这些错了。
贴一下我链接的库,一个个找还挺麻烦的。
nvcc main.cu -I /opt/opencv/include/opencv4 -o main -gencode=arch=compute_86,code=sm_86 -L /opt/opencv/lib64 -lcublas -lcusolver -lcudart -lnvcuvid -lopencv_core -lopencv_cudaarithm -lopencv_videoio -lopencv_imgproc -lopencv_features2d -lopencv_calib3d -lopencv_cudaimgproc -lopencv_imgcodecs -lopencv_highgui -lopencv_cudacodec -lopencv_cudawarping -lopencv_cudafeatures2d
现在跑起来是这样的效果: 就是这样的吗?
理论上不该是这样的,怎么感觉不同帧之间的画面都重在一起了
我编个Windows下的试试
速度比linux快多了,显示和linux差不多的样子,另外显示的时候鱼眼那部分一直在闪(可能是Linux下也有,但是我没看到)。
能告知一下系统的环境么?如cuda版本、open cv版本等