ubuntu14.04+opencv 3.0安装及测试


本文记录ubuntu下安装opencv过程,步骤来自 opencv官网

1、安装opencv所需的库(编译器、必须库、可选库)

转载请说明 http://www.cnblogs.com/llxrl/p/4471831.html

  • GCC 4.4.x or later
  • CMake 2.6 or higher
  • Git
  • GTK+2.x or higher, including headers (libgtk2.0-dev)
  • pkg-config
  • Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
  • ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
  • [optional] libtbb2 libtbb-dev
  • [optional] libdc1394 2.x
  • [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
1 [compiler] sudo apt-get install build-essential
2 [required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
3 [optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

2、从官网下载最新opencv源码(2.4以上)

http://sourceforge.net/projects/opencvlibrary/

或者github

或者百度云盘:https://pan.baidu.com/s/1HbsqFUIr6-xCEaN-e6IA9w

3、编译opencv

将opencv放至任意目录,解压

unzip opencv- 3.0. 0-rc1. zip

创建编译目录,编译

cd ~/opencv-3.0.0-rc1
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

4、测试opencv

1) 创建工作目录

mkdir ~/opencv-lena
cd ~/opencv-lena
gedit DisplayImage.cpp

2) 编辑如下代码

#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( argv[1], 1 );
  if ( !image.data )
  {
    printf("No image data \n");
    return -1;
  }
  namedWindow("Display Image", WINDOW_AUTOSIZE );
  imshow("Display Image", image);
  waitKey(0);
  return 0;
}

3) 创建CMake编译文件

gedit 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} )

4) 编译

cd ~/opencv-lena
cmake .
make

5) 执行

此时opencv-lena文件夹中已经产生了可执行文件DisplayImage,下载lena.jpg放在opencv-lena下,运行

./DisplayImage lena.jpg

6) 结果


--   Other third-party libraries:
--     Use IPP:                     8.2.1 [8.2.1]
--          at:                     /home/test/Downloads/opencv3/opencv-3.0.0/3rdparty/ippicv/unpack/ippicv_lnx
--     Use IPP Async:               NO
--     Use Eigen:                   YES (ver 3.2.0)
--     Use TBB:                     NO
--     Use OpenMP:                  NO
--     Use GCD                      NO
--     Use Concurrency              NO
--     Use C=:                      NO
--     Use pthreads for parallel for:
--                                  YES
--     Use Cuda:                    NO
--     Use OpenCL:                  YES

禁止opencl

注释以下几行:

# --- OpenCL ---
#if(WITH_OPENCL)
#  include(cmake/OpenCVDetectOpenCL.cmake)
#endif()


cmake 会变成:

--   Other third-party libraries:
--     Use IPP:                     8.2.1 [8.2.1]
--          at:                     /home/test/Downloads/opencv3/opencv-3.0.0/3rdparty/ippicv/unpack/ippicv_lnx
--     Use IPP Async:               NO
--     Use Eigen:                   YES (ver 3.2.0)
--     Use TBB:                     NO
--     Use OpenMP:                  NO
--     Use GCD                      NO
--     Use Concurrency              NO
--     Use C=:                      NO
--     Use pthreads for parallel for:
--                                  YES
--     Use Cuda:                    NO
--     Use OpenCL:                  NO




最新发现有的时候,如果opencl编译进入到binary可能会出现莫名其妙的问题,建议编译时去掉,下面是测试代码:

(如果有问题,代码会挂在 cvResize 位置)

#include <stdio.h>
#include <opencv/cv.h>
#include <opencv/cxcore.h>
#include <opencv/highgui.h>
#include <opencv2/imgproc.hpp>
#include "opencv2/core/ocl.hpp"
using namespace cv ;

void ResizeDemo()
{

	 ocl::setUseOpenCL(false);
//         Mat img1=imread("testScale.png");
//         Mat img2;
将原图像变为32*32,长宽比被改变了
//         imshow("WindowOrg",img1);
//         waitKey(10000);
//
//         resize(img1,img2,Size(32,32),0,0,CV_INTER_LINEAR);
//         imshow("WindowNew",img2);
//
//         waitKey(10000);
	IplImage *src = cvLoadImage("testScale.png");
	IplImage *desc;
	CvSize sz;
	double scale = 0.5;
	if(src)
	{
		sz.width = src->width*scale;
		sz.height = src->height*scale;
		desc = cvCreateImage(sz,src->depth,src->nChannels);
		cvResize(src,desc,CV_INTER_CUBIC);
		cvNamedWindow("src",CV_WINDOW_AUTOSIZE);
		cvNamedWindow("desc",CV_WINDOW_AUTOSIZE);
		cvShowImage("src",src);
		cvShowImage("desc",desc);
		cvWaitKey(0);

		cvReleaseImage(&src);
		cvReleaseImage(&desc);
		cvDestroyWindow("src");
		cvDestroyWindow("desc");
	}
}








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值