opencv3.0.0编程遇到的问题

opencv3.0.0编程遇到的问题

一、代码

一个最简单的DisplayImage.cpp,代码为:

#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char** argv )
{

  //if ( argc != 2 )
  //  {
  //      printf("usage: DisplayImage.out <Image_Path>\n");
   //     return -1;
  //  }


    Mat image;
    image = imread("time_1970_186.jpg", 1 );

    if ( !image.data )
    {
        printf("No image data \n");
        return -1;
    }

    namedWindow("Display Image", WINDOW_AUTOSIZE );
    imshow("Display Image", image);
    waitKey(0);


    return 0;
}




CMakeLists.txt为:

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

二、问题

1、
执行cmake .,报错:

[zzz@localhost testopencv]$ cmake .
CMake Error at CMakeLists.txt:3 (find_package):
  By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "OpenCV", but
  CMake did not find one.

  Could not find a package configuration file provided by "OpenCV" with any
  of the following names:

    OpenCVConfig.cmake
    opencv-config.cmake

  Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
  "OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring incomplete, errors occurred!

由于我安装的时候,是在opencv-3.0.0目录下建立了一个release,在这里进行安装的,安装的目标路径为:opencv-3.0.0目录下新建的的build目录。

[root@localhost release]# cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=../build/ ..

...

[root@localhost release]# ll 
total 416
drwxr-xr-x. 10 root root   4096 Dec 25 11:53 3rdparty
drwxr-xr-x.  6 root root   4096 Dec 25 11:53 apps
drwxr-xr-x.  2 root root   4096 Dec 25 11:59 bin
-rw-r--r--.  1 root root 170052 Dec 25 11:53 CMakeCache.txt
drwxr-xr-x. 10 root root   4096 Dec 25 12:00 CMakeFiles
-rw-r--r--.  1 root root   6200 Dec 25 11:53 cmake_install.cmake
-rw-r--r--.  1 root root   1182 Dec 25 11:53 cmake_uninstall.cmake
-rw-r--r--.  1 root root   6105 Dec 25 11:53 CPackConfig.cmake
-rw-r--r--.  1 root root   6451 Dec 25 11:53 CPackSourceConfig.cmake
-rw-r--r--.  1 root root   3715 Dec 25 11:53 cvconfig.h
drwxr-xr-x.  3 root root   4096 Dec 25 11:53 data
drwxr-xr-x.  3 root root   4096 Dec 25 11:53 doc
drwxr-xr-x.  3 root root   4096 Dec 25 11:53 include
-rw-r--r--.  1 root root  20536 Dec 25 12:00 install_manifest.txt
drwxr-xr-x.  2 root root   4096 Dec 25 11:52 junk
drwxr-xr-x.  2 root root   4096 Dec 25 11:59 lib
-rw-r--r--.  1 root root 100547 Dec 25 11:53 Makefile
drwxr-xr-x. 37 root root   4096 Dec 25 11:53 modules
drwxr-xr-x.  2 root root   4096 Dec 25 11:53 opencv2
-rw-r--r--.  1 root root  16636 Dec 25 11:53 OpenCVConfig.cmake
-rw-r--r--.  1 root root    376 Dec 25 11:53 OpenCVConfig-version.cmake
-rw-r--r--.  1 root root  11691 Dec 25 11:53 OpenCVModules.cmake
drwxr-xr-x.  2 root root   4096 Dec 25 11:53 unix-install
-rw-r--r--.  1 root root   6788 Dec 25 11:53 version_string.tmp
[root@localhost release]# 


..
[root@localhost release]# ll ../build/
total 16
drwxr-xr-x. 2 root root 4096 Dec 25 12:00 bin
drwxr-xr-x. 4 root root 4096 Dec 25 12:00 include
drwxr-xr-x. 3 root root 4096 Dec 25 12:00 lib
drwxr-xr-x. 3 root root 4096 Dec 25 12:00 share

可以看到:报错所说的两个文件:
OpenCVConfig.cmake
opencv-config.cmake
其中的一个就在我执行安装的路径release下,所以,我需要指定这个路径。修改CMakeLists.txt为:

[zzz@localhost testopencv]$ cat CMakeLists.txt 
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
set(OpenCV_DIR /home/zzz/software/opencv-3.0.0/release)
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )


[zzz@localhost testopencv]$ cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/zzz/test/testopencv

2、找不到头文件

[zzz@localhost testopencv]$ make
Scanning dependencies of target DisplayImage
[100%] Building CXX object CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o
/home/zzz/test/testopencv/DisplayImage.cpp:3:30: fatal error: opencv2/opencv.hpp: No such file or directory
 #include <opencv2/opencv.hpp>
                              ^
compilation terminated.
make[2]: *** [CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o] Error 1
make[1]: *** [CMakeFiles/DisplayImage.dir/all] Error 2
make: *** [all] Error 2
[zzz@localhost testopencv]$

原因同上,没有安装到系统路径下,这时候通过指示cmake需要包含指定的目录即可:
include_directories

[gumh@localhost testopencv]$ cat CMakeLists.txt 
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
set(OpenCV_DIR /home/zzz/software/opencv-3.0.0/release)
include_directories(/home/zzz/software/opencv-3.0.0/build/include)
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

cmake的一些用法参考:
http://www.cppblog.com/skyscribe/archive/2009/12/14/103208.html

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值