gpt4 book ai didi

c++ - 将 libopencv_gpu.so 与 OpenCV 链接时 undefined reference

转载 作者:行者123 更新时间:2023-11-28 06:44:17 24 4
gpt4 key购买 nike

尝试编译单个 .cpp 文件时出现错误

主要.cpp:

#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/flann/miniflann.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/video.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/ml/ml.hpp"
#include "opencv2/highgui/highgui_c.h"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/contrib/contrib.hpp"
#include <opencv2/gpu/gpu.hpp>
#include <iostream>

int main(int argc, char* argv[])
{
cv::VideoCapture capture = cv::VideoCapture(argv[1]);
cv::gpu::GpuMat gpu_frame,gpu_frame_binary;
cv::Mat frame;
int threshold_value = 80;
int threshold_type = 0;
while (1)
{
capture >> frame;
gpu_frame.upload(frame);
if (!frame.data)
break;

cv::gpu::threshold(gpu_frame, gpu_frame_binary, threshold_value, 255, threshold_type);
}
return 0;
}

使用这些选项构建的 OpenCV:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_V4L=ON -D WITH_GSTREAMER=ON -D WITH_OPENEXR=ON -D WITH_UNICAP=ON -D BUILD_PYTHON_SUPPORT=ON -D INSTALL_C_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D ENABLE_SSE2=ON -D WITH_CUDA=ON ..

用于编译的命令:

g++ -ggdb `pkg-config --cflags opencv` -o main main.cpp `pkg-config --libs opencv` -lopencv_gpu 

我得到的错误:

/usr/local/lib/libopencv_gpu.so: undefined reference to `cv::gpu::convertTo(cv::gpu::GpuMat const&, cv::gpu::GpuMat&, double, double, CUstream_st*)'
/usr/local/lib/libopencv_gpu.so: undefined reference to `cv::gpu::setTo(cv::gpu::GpuMat&, cv::Scalar_<double>, cv::gpu::GpuMat const&, CUstream_st*)'
/usr/local/lib/libopencv_gpu.so: undefined reference to `cv::gpu::setTo(cv::gpu::GpuMat&, cv::Scalar_<double>, CUstream_st*)'
collect2: error: ld returned 1 exit status

当我尝试不使用 -lopencv_gpu 选项进行编译时,出现如下错误:

main.cpp:61: undefined reference to `cv::gpu::threshold(cv::gpu::GpuMat const&, cv::gpu::GpuMat&, double, double, int, cv::gpu::Stream&)'

任何想法可能是错误的?

P.S 可能需要注意的是,我首先在没有 cuda 的情况下构建了 opencv,然后决定我想尝试 cuda 并在打开 cuda 选项的情况下构建它,然后执行 sudo make install。 我认为它会覆盖以前安装的内容,但可能那里出了问题?

在 Fedora 20 上运行,带有 Nvidia 卡。

最佳答案

我遇到了同样的问题。
为了解决这个问题,我刚刚删除了 /usr/local/lib/中的 libopencv_gpu.so.2.4libopencv_gpu.so.2.4.10

关于c++ - 将 libopencv_gpu.so 与 OpenCV 链接时 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25312143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com