Ubuntu18.04安装opencv 3.2.0的解决方法

下面是Ubuntu18.04安装opencv 3.2.0的解决方法攻略:

一、安装依赖项

首先,要安装一些基本依赖项。在终端中执行以下命令:

sudo apt-get update
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

二、安装openCV

1. 下载源码

我们需要下载openCV 3.2.0的源码。可以在openCV官网下载,或者使用以下命令在终端中下载:

wget https://github.com/opencv/opencv/archive/3.2.0.zip

2. 解压源码并进入目录

解压下载的源码,并进入opencv-3.2.0目录:

unzip 3.2.0.zip
cd opencv-3.2.0/

3. 编译

执行以下命令开始编译:

mkdir build
cd build/
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j4
sudo make install

其中:

  • -D CMAKE_BUILD_TYPE=RELEASE 表示以发布模式编译openCV。
  • -D CMAKE_INSTALL_PREFIX=/usr/local 表示将openCV的安装路径设置为/usr/local

三、测试

为了验证openCV安装成功,我们可以尝试运行一个简单的测试程序。

1. 创建测试文件

使用以下命令在当前目录下创建一个名为test.cpp的文件:

nano test.cpp

在文件中粘贴以下内容:

#include <opencv2/opencv.hpp>
#include <iostream>

int main(int argc, char** argv)
{
  cv::Mat image = cv::imread("test.jpg", CV_LOAD_IMAGE_COLOR);
  if(!image.data)
    {
      std::cout <<  "Could not open or find the image" << std::endl ;
      return -1;
    }
  cv::namedWindow("Display window", cv::WINDOW_AUTOSIZE );
  cv::imshow("Display window", image);
  cv::waitKey(0);
  return 0;
}

其中test.jpg是需要打开的图片文件名。

2. 编译测试程序

使用以下命令编译测试程序:

g++ -o test test.cpp `pkg-config opencv --cflags --libs`

3. 运行测试程序

使用以下命令运行测试程序:

./test

如果成功打开了图片,则说明openCV已经安装成功了。

示例1:使用openCV进行人脸检测

下面是一个简单的示例,演示如何使用openCV进行人脸检测。这个示例的前提是你已经安装好openCV。

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;

int main(int argc, const char* argv[])
{
    if(argc != 2) {
        cerr << "Usage: " << argv[0] << " <Image_Path>" << endl;
        return -1;
    }

    // Load the cascade
    cv::CascadeClassifier cascade;
    cascade.load("haarcascade_frontalface_default.xml");

    // Load image
    cv::Mat image = cv::imread(argv[1]);

    // Detect faces
    vector<cv::Rect> faces;
    cascade.detectMultiScale(image, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, cv::Size(30, 30));

    // Draw rectangle around faces
    for(int i = 0; i < faces.size(); i++) {
        cv::Point topLeft(faces[i].x, faces[i].y);
        cv::Point bottomRight(faces[i].x + faces[i].width, faces[i].y + faces[i].height);
        cv::rectangle(image, topLeft, bottomRight, cv::Scalar(255, 255, 255), 2, 8, 0);
    }

    // Display result
    cv::imshow("result", image);
    cv::waitKey(0);

    return 0;
}

说明:

  • 该示例可通过命令行创建一个图片文件,然后读入该图片文件进行人脸检测,并在图片中画出人脸矩形框。

示例2:使用openCV进行图像识别

下面是一个简单的示例,演示如何使用openCV进行基本图像识别。这个示例的前提是你已经安装好openCV。

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;

int main()
{
    // Load image
    cv::Mat frame = cv::imread("test.jpg");

    // Convert image to grayscale
    cv::Mat gray;
    cv::cvtColor(frame, gray, cv::COLOR_BGR2GRAY);

    // Load the trained data-file
    cv::CascadeClassifier faceCascade;
    faceCascade.load("haarcascade_frontalface_default.xml");

    // Detect faces
    std::vector<cv::Rect> faces;
    faceCascade.detectMultiScale(gray, faces, 1.2, 3);

    // Draw rectangles around faces
    for(int i = 0; i < faces.size(); i++) {
        cv::rectangle(frame, faces[i], cv::Scalar(0, 255, 0), 4);
    }

    // Display result
    cv::imshow("result", frame);
    cv::waitKey(0);

    return 0;
}

说明:

  • 该示例可通过读入一个图片文件进行基本图像识别,并在图片中画出识别出来的目标矩形框。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Ubuntu18.04安装opencv 3.2.0的解决方法 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • iQOOZ1x系统怎么样 iQOOUI安卓10系统评测分析

    iQOO Z1x 是一款搭载 iQOOUI 安卓10 系统的手机,下面为大家介绍一下 iQOO Z1x 系统的评测分析。 iQOO Z1x 系统怎么样? 1. iQOOUI 安卓10 系统总体感受 iQOO Z1x的系统采用了 iQOOUI 安卓10 系统,整体风格跟原生 Android 有所不同,加入了许多骚气的设计元素,使得整个系统看起来更加时尚炫酷。系…

    人工智能概览 2023年5月25日
    00
  • django-rest-swagger对API接口注释的方法

    下面是关于django-rest-swagger对API接口注释的详细攻略: 什么是django-rest-swagger django-rest-swagger是一个用于构建RESTful API的Django工具包,它自动会根据你的代码生成API文档。它提供了一个名为Swagger的UI界面,方便了API接口的浏览和测试。 如何对API接口进行注释 dj…

    人工智能概览 2023年5月25日
    00
  • JavaScript JSON使用原理及注意事项

    JavaScript JSON是一种轻量级的数据格式,用于传输和存储数据。在实际开发过程中,我们经常需要使用JSON数据格式进行数据交换和传输。本文将详细讲解JavaScript JSON的使用原理及注意事项。 JSON概述 JSON全称JavaScript Object Notation,它是一种轻量级的数据格式,由Douglas Crockford于20…

    人工智能概论 2023年5月25日
    00
  • Go实现分布式系统高可用限流器实战

    Go实现分布式系统高可用限流器实战攻略 什么是限流器? 限流器是用来控制流量的一种重要工具。在分布式系统中,限流器可以帮助我们控制流量并且保证系统的稳定运行。 Go实现分布式系统高可用限流器的步骤 以下是Go实现分布式系统高可用限流器的步骤: 1. 定义限流器的数据结构 我们需要定义一个结构体来表示限流器。这个结构体包含以下字段: 每秒钟可以处理的请求数 r…

    人工智能概览 2023年5月25日
    00
  • Android自定义TimeButton实现倒计时按钮

    Android自定义TimeButton实现倒计时按钮攻略 前言 在Android开发过程中,经常会遇到需要实现倒计时按钮的需求。例如在用户注册登录时,发送验证码需要倒计时等待。这时,我们可以采用一个自定义的控件:TimeButton。 TimeButton实现了倒计时功能,是一个非常实用的控件。在本篇攻略中,我们将介绍如何自定义TimeButton实现倒计…

    人工智能概览 2023年5月25日
    00
  • Django drf请求模块源码解析

    下面是关于” Django drf请求模块源码解析”的完整攻略,希望可以帮到你。 什么是Django drf? Django drf(Django REST framework)是一个基于 Django 框架的灵活、可扩展的轻量级 Web API 框架,支持认证、限流、缓存等常见的 API 开发需求。Django drf 是目前 Web API 开发最流行的…

    人工智能概论 2023年5月25日
    00
  • C# 定义常量 两种实现方法

    C# 中定义常量有两种实现方法: 方法一:使用 const 关键字 使用 const 关键字可以定义常量,const 只能用来修饰值类型、枚举类型和字符串类型,不能用来修饰类和结构体等引用类型。常量定义后不能修改,必须在定义时进行初始化赋值,下面是一个使用 const 关键字定义常量的示例: using System; class Program { sta…

    人工智能概览 2023年5月25日
    00
  • PyTorch 检查GPU版本是否安装成功的操作

    当使用 PyTorch 进行深度学习计算的时候,GPU 可以大大加速模型训练的速度。因此,在安装 PyTorch 时,我们需要确保同时也安装了正确版本的 GPU 驱动。本文将介绍两种方法来检查 PyTorch 是否成功安装了 GPU 驱动。 方法一:使用 torch.cuda.is_available() 函数 PyTorch 中有一个函数 torch.cu…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部