OpenCV教程——OpenCV环境配置及第一个测试代码

news2024/11/16 3:37:05

1.OpenCV简介

OpenCV是一个计算机视觉的开源库。英文全称是:Open Source Computer Vision Library。

常用的OpenCV的核心模块:

  1. Image Process
  2. Camera Calibration and 3D Reconstruction
  3. Video Analysis
  4. Object Detection
  5. Machine Learning
  6. Deep Learning
  7. GPU Acceleration
  8. ……

官方网站:Home - OpenCV
GitHub:https://github.com/opencv

相关知识补充:

SDK:软件开发工具包(Software Development Kit)一般都是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。(资料来源:百度百科:SDK)

GPU:图形处理器(Graphics Processing Unit,GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。显卡的处理器称为图形处理器(GPU),它是显卡的“心脏”,与CPU类似,只不过GPU是专为执行复杂的数学和几何计算而设计的。GPU已经不再局限于3D图形处理了,GPU通用计算技术发展已经引起业界不少的关注,事实也证明在浮点运算、并行计算等部分计算方面,GPU可以提供数十倍乃至于上百倍于CPU的性能。GPU相当于专用于图像处理的CPU,正因为它专,所以它强,在处理图像时它的工作效率远高于CPU,但是CPU是通用的数据处理器,在处理数值计算时是它的强项,它能完成的任务是GPU无法代替的,所以不能用GPU来代替CPU。(资料来源:百度百科:GPU)

GPU通用计算方面的标准:目前有OpenCL、CUDA、ATI STREAM。

2.OpenCV配置

电脑环境:Mac+Clion+C++

2.1.OpenCV下载

OpenCV的两种下载方法:

  1. 官网下载(官网地址见上文)。
  2. 通过HomeBrew下载。

我个人是通过HomeBrew下载的,也推荐大家使用这种下载方式,方便包的管理和更新。具体流程见下:

2.1.1.安装HomeBrew

HomeBrew中文官方网址:HomeBrew

打开终端,输入以下命令:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2.1.2.下载CMake

CMake官方网站:CMake

点击Download进入下载页面,选择适合的Platform进行下载,我选择的是Mac OS

但是,下载完成之后,在终端依旧无法使用cmake命令,这时需要进一步的设置:

点击How to Install For Command Line Use,出现以下提示:

选择第二种方法,在终端输入:

sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install

这样使得每次打开终端,都可以正确识别cmake命令。

当然,也可以选择使用HomeBrew下载CMake,在终端输入如下命令即可:

brew install cmake

2.1.3.下载OpenCV

使用HomeBrew下载OpenCV,在终端输入以下命令:

brew install opencv

下载的为最新版本的OpenCV,我下载的版本为4.0.1。

2.2.OpenCV在Clion中的配置

打开Clion,新建一个C++项目。

修改CMakeLists.txt

 
1
2
3
4
5
6
7
8
cmake_minimum_required(VERSION 3.13) ##cmake版本
project(CDemo2) ##项目名称
find_package(OpenCV REQUIRED)
include_directories( ${OpenCV_INCLUDE_DIRS} )
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)  ##main.cpp改为自己定义的名字
add_executable(CDemo2 ${SOURCE_FILES}) ##CDemo2改为自己的项目名称
target_link_libraries(CDemo2 ${OpenCV_LIBS})  ##CDemo2改为自己的项目名称

2.3.代码测试

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
    Mat p1=imread("/Users/xinshichao/PersonalWork/C++Demo/Pictures/p1.jpeg"); //改成自己的图片路径,尽量使用绝对路径
    if(!p1.data){
        printf("could not find the image...\n");
    }
    namedWindow("output",WINDOW_AUTOSIZE);
    imshow("output",p1);
    waitKey(0);
    return 0;
}

输出结果:

OpenCV配置成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/498136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】Linux安装Git(图文解说详细版)

文章目录 前言第一步&#xff0c;官网下载安装包第二步&#xff0c;解压安装包第三步&#xff0c;安装编译环境第四步&#xff0c;编译源码第五步&#xff0c;安装git第六步&#xff0c;配置环境变量 前言 服务器版本&#xff1a;CentOS7.8 git官网&#xff1a;https://git-sc…

汽车出租系统【纯控制台】(Java课设)

系统类型 纯控制台类型&#xff08;没有用到数据库&#xff09; 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Idea或eclipse 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87753364 更多系统…

Qt5.14.2安装教程

之所以选择安装Qt5.14.2&#xff0c;是因为从5.15.0起&#xff0c;对于开源用户&#xff0c;Qt官方不再提供独立安装文件&#xff0c;源码安装听说很繁琐&#xff0c;并且还要激活码。 官网下载链接&#xff1a;https://download.qt.io/archive/qt/5.14/5.14.2/ 1、Windows用户…

智能优化算法:基于驾驶训练的优化算法-附代码

智能优化算法&#xff1a;基于驾驶训练的优化算法 文章目录 智能优化算法&#xff1a;基于驾驶训练的优化算法1. 基于驾驶训练优化算法1.1 初始化1.2 阶段一&#xff1a;驾驶教练培训&#xff08;探索阶段&#xff09;1.3 阶段二&#xff1a;学员学习&#xff08;探索阶段&…

Jupyter notebook 如何设定默认的保存目录?

前言&#xff1a; 做智能车的时候&#xff0c;Jupter Notebook的默认保存在可怜的C盘&#xff0c;本来就很紧张的C肯定受不了&#xff0c;要改到别的地方&#xff0c;网上找了一些参考&#xff0c;说变更一下配置地址就可以了&#xff0c;照着做&#xff0c;99%的博客说&#x…

Linux驱动开发笔记(一):helloworld驱动源码编写、makefile编写以及驱动编译基本流程

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/130534343 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

算法和算法竞赛的知识点

2023年5月7日&#xff0c;周日早上&#xff1a; 虽然今天早上我作出了改变学习算法方式的决定&#xff0c;但是知识点有哪些、具体该怎么做还没搞清楚&#xff0c;于是去刷题网站截图了它们的标签。 或许看相关书籍的知识点和题单也不错。 LeetCode的知识点 力扣 蓝桥杯的知识…

2023招商Fintech数据赛道rank33 赛后分享

赛题需求&#xff1a; 本次比赛为参赛选手提供了两个数据集&#xff0c;即训练数据集(train)和测试数据集(test_A榜/test_B榜)。参赛选手需要基于训练数据集&#xff0c;通过有效的特征提取&#xff0c;构建客户进取类产品配置发生时点预测模型,并将模型应用于测试数据集上,输出…

力扣sql中等篇练习(十六)

力扣sql中等篇练习(十六) 1 不同性别每日分数统计 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 分数是往后累加的 SELECT s2.gender,s2.day,sum(s1.score_points) total FROM Scores s1 CROSS JOIN Scores s2 ON s2.gen…

java创建多线程的方法

Java中是可以创建多个线程的&#xff0c;每个线程都有自己的名字和时间戳。下面我们来看看创建多个线程的方法。 创建多个线程&#xff0c;需要使用到 Thread类中的 create方法。需要注意的是&#xff0c;不是所有的线程都可以使用 create方法来创建&#xff0c;只有当这些线程…

目前可用的ChatGPT网站

本文意在整理可用gpt-3.5、gpt-4.0等网站。 本文主要是方便自己翻阅&#xff0c;如对您也有所帮助&#xff0c;不胜荣幸~ 文章目录 chatgpt.qdymys.cngpttalkchatgpt-cn.cobing.com总结 chatgpt.qdymys.cn 网址&#xff1a;https://chatgpt.qdymys.cn/限制&#xff1a;三小时只…

【新星计划-2023】TCP/IP协议讲解

相信大家在学习的过程中一定听到过TCP/IP这个协议&#xff0c;那么&#xff0c;TCP/IP协议是什么&#xff1f;为什么会有TCP/IP协议&#xff1f; 一、TCP/IP是什么&#xff1f; TCP/IP是用于计算机通信的一组协议&#xff0c;我们通常称它为TCP/IP协议族。它是70年代中期美国…

Spring Boot项目瘦身

目录 1&#xff0c;什么是瘦身&#xff1f;2&#xff0c;为什么要瘦身&#xff1f;3&#xff0c;如何瘦身&#xff1f;3.1&#xff0c;瘦身思路&#xff1a;3.2&#xff0c;瘦身方法 4&#xff0c;瘦身后运行 1&#xff0c;什么是瘦身&#xff1f; 瘦身&#xff1a;thinBody&a…

CSS进阶

01-复合选择器 定义&#xff1a;由两个或多个基础选择器&#xff0c;通过不同的方式组合而成。 作用&#xff1a;更准确、更高效的选择目标元素&#xff08;标签&#xff09;。 后代选择器 后代选择器&#xff1a;选中某元素的后代元素。 选择器写法&#xff1a;父选择器 …

Spring AOP续--织入

上篇讲到SpringAOP的一些用法以及概念&#xff0c;这里我们单独讲一下AOP中的“织入”。 我们知道&#xff0c;SpringAOP是基于动态代理实现的技术&#xff0c;而织入则是一个生成动态代理对象并且将切面和目标对象方法编织成为约定流程的过程。 对于通知&#xff0c;上篇文章…

数字化转型导师坚鹏:如何制定与实施企业数字化转型年度培训规划

如何制定与实施企业数字化转型年度培训规划 ——以推动企业数字化转型战略落地为核心&#xff0c;实现知行果合一 课程背景&#xff1a; 很多企业都在开展企业数字化转型培训工作&#xff0c;目前存在以下问题急需解决&#xff1a; 缺少针对性的企业数字化转型年度培训规划…

Python每日一练(20230507) 丑数I\II\III、超级丑数

目录 1. 丑数 Ugly Number I 2. 丑数 Ugly Number II 3. 丑数 Ugly Number III 4. 超级丑数 Super Ugly Number &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 丑数 Ugly Number I …

JavaWeb——1.JavaWeb概述

这是我们javaweb的第一篇文章&#xff0c;首先我们来介绍一下什么是Javaweb JavaWeb&#xff1a;使用java语言完成服务器端程序开发 如下面这张图所示&#xff1a; 可能不太好理解&#xff0c;那么就用通俗的语言来解释一下。 任何的一个应用程序&#xff0c;首先它会有页面…

在 Python 中将秒转换为小时、分钟和秒

文章目录 在 Python 中使用数学计算将秒转换为小时、分钟和秒的自定义函数在 Python 中使用 divmod() 函数将秒转换为小时、分钟和秒在 Python 中使用 DateTime 模块将秒转换为小时、分钟和秒在 Python 中使用时间模块将秒转换为小时、分钟和秒 本篇文章将讨论使用 Python 中的…

Golang每日一练(leetDay0058) 比较版本号、分数转小数

目录 165. 比较版本号 Compare Version Numbers &#x1f31f;&#x1f31f; 166. 分数到小数 Fraction To Recurring Decimal &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 …