在服务器上通过 cmake 编译opencv的代码时,出现未引用的错误:

CMakeFiles/guassianFilter.dir/main.cpp.o:在函数‘main’中:
main.cpp:(.text+0x53):对‘cv::imread(cv::String const&, int)’未定义的引用
main.cpp:(.text+0xc0):对‘cv::namedWindow(cv::String const&, int)’未定义的引用
main.cpp:(.text+0x112):对‘cv::imshow(cv::String const&, cv::_InputArray const&)’未定义的引用
CMakeFiles/guassianFilter.dir/main.cpp.o:在函数‘cv::String::String(char const*)’中:
main.cpp:(.text._ZN2cv6StringC2EPKc[_ZN2cv6StringC5EPKc]+0x4d):对‘cv::String::allocate(unsigned long)’未定义的引用

发现是在我的CMakeLists.txt文件里,指定OpenCV的安装位置错误了

通过指令 sudo find / -iname "opencv" 可以得到以下目录

/usr/include/opencv
/usr/share/opencv
/usr/share/OpenCV
/usr/local/include/opencv
/usr/local/share/OpenCV
/home/zkp/app_installer/opencv320/opencv-3.2.0/include/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/platforms/android/service/engine/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/modules/java/common_test/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/modules/java/pure_test/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/modules/java/android_test/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/samples/android/camera-calibration/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/samples/android/tutorial-1-camerapreview/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/samples/android/tutorial-2-mixedprocessing/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/samples/android/tutorial-3-cameracontrol/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/samples/android/tutorial-4-opencl/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/samples/android/face-detection/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/samples/android/color-blob-detection/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/samples/android/image-manipulations/src/org/opencv
/home/zkp/app_installer/opencv320/opencv-3.2.0/samples/android/15-puzzle/src/org/opencv
/home/zkp/app_installer/opencv320/build/share/OpenCV
/home/zkp/app_installer/opencv320/build/CMakeFiles/Export/share/OpenCV

我起初在CMakeLists.txt文件设定OpenCV路径为:

set(OpenCV_DIR "/usr/local/share/OpenCV")

后面改为下面的路径才通过编译了:

set(OpenCV_DIR "/home/zkp/app_installer/opencv320/build/share/OpenCV")

(注:根据自身OpenCV安装路径设定)

最后我的CMakeLists.txt中为:(需要根据自己设备具体情况更改相应目录以及包的名称之类)

cmake_minimum_required(VERSION 2.8)
find_package(CUDA REQUIRED)
set(OpenCV_DIR "/home/zkp/app_installer/opencv320/build/share/OpenCV")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
cuda_add_executable(
    guassianFilter
    guassian_array.cpp
    main.cpp
    guassian.cu
target_link_libraries( guassianFilter ${OpenCV_LIBS} )
                    在服务器上通过cmake编译opencv的代码时,出现未引用的错误:CMakeFiles/guassianFilter.dir/main.cpp.o:在函数‘main’中:main.cpp:(.text+0x53):对‘cv::imread(cv::String const&, int)’未定义的引用main.cpp:(.text+0xc0):对‘cv::namedWindow(cv::String const&, int)’未定义的引用main.cpp:(.text+0x112):
				
Ubuntu用的opencv3.1.0,遇到cv::imread(cv::String const,int)未定义引用 网上百度说是需要安装一个libopencv_imgcodecs库 安装libopencv_imgcodecs库 sudo apt-get install libopencv_imgcodecs 安装时,说无法定位软件包 然后更新软件源 sudo apt-get up...
今天运行了用vscode一下视觉SLAM十四讲第二版的ch5的P107代码,本以为能顺顺利利的跑起来,但结果让人意想不到。出现了大面积的报错,说相应的函数没有定义应用。如图: 我百思不得其解,于是查看了CMAKELISTS,发现原来是这一部分出了问题,于是将这一部分的代码进行了增加。主要原因是缺少相应的链接,找不到OPENCV函数库。 可以在将上面代码整体换成如下代码。 cmake_minimum_required( VERSION 2.8 ) project(imageBasics)...
使用QT+OPENCV播放视频,本想先实现一下别人的代码、结果一堆类似这样的错误,: error: undefined reference to `cv::VideoCapture::open(std::__cxx11::basic_string, std::allocator > const&)', 整理两天各种试,最后还是问了专业同事,听取一下意见,如果.h的opencv的头文件已经添加,.
OpenCV 编译错误未定义引用opencv安装完成也有一阵子了,我才用的是编译安装,环境Ubuntu16.04 LTS。今天有时间想自己写一点程序,却发现编译不过代码如下,打开命令行中输入的文件名并展示在窗口中// openpicture.cpp #include "opencv2/highgui/highgui.hpp"int main(int argc, char** argv)
原因:我本人用的CLion编译器,其CMakeLists.txt中缺少找到opencv库的语句,所以在编译的时候不会通过,但是编译器不会提示有误。可以将cmakelist文件改为如下:cmake_minimum_required(VERSION 3.9) project(HOG) set(CMAKE_CXX_STANDARD 11) find_package( OpenCV REQUIRED ...
1>—— 已启动生成: 项目: save-image, 配置: Release x64 —— 1>save-image-D435.obj : error LNK2001: 无法解析的外部符号 “private: char * __cdecl cv::String::allocate(unsigned __int64)” (?allocate@String@cv@@AEAAPEAD_K@Z) 1>save-image-D435.obj : error LNK2001: 无法解析的外部符号 “private: void __cdecl cv::String::deallocate(void)” (
对‘cv::waitKey(int)’未定义引用 我一直以为是C++11或者g++版本的原因,看到: http://forum.ubuntu.com.cn/viewtopic.php?f=48&t=377522 提出: g++ `pkg-config –cflags –libs opencv` lena.cpp -o lena 这样会编译失败,而 g++ lena.cpp `pkg-config –cflags –libs opencv` -o lena 这样就会成功。试了一下果然如此。 以上这篇codeblocks 对‘cv::waitKey(int)’未定义引用方式就是小编分享给大家的
头文件:#include <graphics> 原  型:fillpoly(int numpoints, int far *polypoints); 参数说明:numpoints 为多边形的边数;far *polypoints 为存储各顶点坐标的数组,每两个一组表示一个顶点的 X 和 Y 坐标。 实例代码: #include <graphics> #include <stdlib> #include <s
如果你报了相同的错误,但是没有安装libtorch的话,可能是cmakelist中没有target_link_libraries(opencvt ${OpenCV_LIBS}) 本博客的重点在于解决同时配置opencv和libtorch时报的上面的错误 Ubuntu16.04+opencv4.4+clion+libtorch1.4 关于在clion上配置libtorch的问题可以查看本人的另一篇博客 报错的特征
Linux下编写C++代码引用opencv头文件,编译报错 undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int)的两种解决办法 1. 首先确定已安装opencv,可在终端输入命令查看: $ opencv...
OpenCV可以用来生成视频,通过在编程中添加视频的宽度、高度、帧率和编码器等参数,可以生成动态的、流畅的视频文件。下面是一些用OpenCV编程生成视频的简单步骤: 1. 导入OpenCV库并初始化视频容器。 在编程中需要引入OpenCV库,并调用cv2.VideoWriter()函数来创建和初始化视频容器。这个函数接收四个参数:视频文件输出路径、编码器种类、帧率和视频大小等,可以根据自己的需要设置。 2. 进行处理并将数据写入视频帧中。 在开始视频生成过程之前需要处理数据,并将处理后的数据写入视频帧(Frame)中。在每一个迭代周期中,可以在帧中添加新的图像数据或修改已存在的数据。 3. 输出并保存最终的视频文件。 视频文件生成完成后,可以通过调用cv2.VideoCapture()函数来检查视频文件是否可以被正确的读取或播放。如果一切正常,则可以调用cv2.VideoWriter.release()函数来输出和保存最终的视频文件。 除了生成视频文件之外,OpenCV也可以用于视频流的捕捉、处理和显示,非常适用于很多应用领域,比如智能视频监控、机器人视觉等。 总之,OpenCV编程生成视频能够实现从数据处理到视频输出的一整套流程,方便实用。