CV-2020-实践:01 环境的搭建 (OpenCV, OpenMP和OpenCL)

车胄
• 阅读 452

CV-2020-实践:01 环境的搭建 (OpenCV, OpenMP和OpenCL)

计算机视觉的C++实践与实现,基于mac的Xcode平台,安装和配置包括OpenCV、OpenMP和OpenCL。
Computers are useless. They can only give you answers. -- Pablo Picasso

1. OpenCV

  • OpenCV (Open Source Computer Vision Library)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,好吧,这句来自百度百科。简单来说,OpenCV提供和实现了很多图像处理计算机视觉方面的很多通用算法(之前用python使用,现在么,是C++了,虽然安装麻烦了一些就是了,汗)。

步骤一:homebrew安装

  • homebrew是Mac下的软件包管家,以及是老朋友了。
  • 安装可以直接进入官网,然后在终端输入其中的安装指令,如果存在问题的话,可以百度一下,还是比较方便的。
  • 当前的命令是,

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

步骤二:OpenCV安装

  • 通过homebrew直接安装opencv(之前还先装CMake,去下载源代码,但真的是太慢了,汗)。

    brew install opencv
  • 可能需要先更新homebrew,使用brew update(感觉好慢,大家可以考虑替换更新源,个人使用的是阿里的)。

    # 替换brew.git
    cd "$(brew --repo)"
    git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
    
    # 替换homebrew-core.git
    cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
    git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
    
    # 应用生效,update可能需要等一段时间
    brew update 
    
    # 替换homebrew-bottles:
    echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
    source ~/.bash_profile
  • 如果很久(十分钟)还是没能更新成功,可以使用brew doctor查看是否有问题提示,有的话按照提示修复即可(我的话,还更新了系统和XCode)。另外过程中可能会出现The bottle needs the Xcode CLT to be installed.的提示,这时可以使用xcode-select --install进行安装。
  • 如果一切都顺利的话,之后的安装大概需要一个小时多(但我用了一天,太多事了),安装完成后可以使用brew info opencv命令查看是否安装成功(阴影处为安装目录)。

    CV-2020-实践:01 环境的搭建 (OpenCV, OpenMP和OpenCL)

步骤三:XCode配置与测试

  1. 新建一个Command Line Tool,在BuildSetting中,添加Header Search Paths和Library Search Paths,如图,

    CV-2020-实践:01 环境的搭建 (OpenCV, OpenMP和OpenCL)

  2. 然后可以将 /usr/local/cellar/opencv/4.2.0_1/lib(由个人的版本决定)中所需的*.dylib导入项目中。

    • 方法一:可以在Build Phase中的Link Binary With Libraries中加入;
    • 方法二:也可以直接在工程中新建一个文件夹,自行复制导入。

CV-2020-实践:01 环境的搭建 (OpenCV, OpenMP和OpenCL)

  1. 编写测试代码

    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    
    int main(){
        using namespace cv;
        
        //读入图片
        Mat image = imread("??/fobird.png"); //文件路径
        
        //创建视图窗
        namedWindow("FoBird");
        
        //在窗口中展示图片
        imshow("FoBird", image);
        
        //waitkey 5000ms
        waitKey(0);
        
        return 0;
    }
  2. 运行,查看结果

    CV-2020-实践:01 环境的搭建 (OpenCV, OpenMP和OpenCL)

2. OpenMP

  • OpenMP (Open Multi-Prcessing)是程序并行化的一个框架,在图像处理、使用OpenCV时常需要使用。

步骤一:安装llvm

  • 为什么需要安装llvm?什么是llvm?llvm、gcc和Clang各自都是什么?这些就不赘述了(其实我也不是很清楚),待之后再细细研究吧。总之OpenMP的开发支持已经移入了www.llvm.org之中,通过brew下载了llvm就可以了。
  1. 下载同OpenCV一样了,终端输入brew install llvm,然后放置许久(真的好久),就好了,是不是很方便呢?
  2. 将llvm加入路径,echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> ~/.zshrc(按照提示,原本为echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> ~/.bash_profile

步骤二:XCode配置

  1. 创建一个新的XCode项目,和上文一样;
  2. 进行设置(Build Setting中):

    1. Enable Index-While-Building Functionality设置为No
    2. Enable Modules (C and Objective-C)设置为No
    3. Header Search Paths加入/usr/local/Cellar/llvm/9.0.1/lib/clang/9.0.1/include
    4. Library Search Paths加入/usr/local/Cellar/llvm/9.0.1/lib
    5. 增加一个User-Defined变量CC,为/usr/local/bin/clang-omp(Basic, Customized, All 一栏中最末的加号);
    6. Apple Clang - Custom Compiler Flags 中的 Other C Flags 加入 -fopenmp
  3. 导入libomp.dylib(/usr/local/Cellar/llvm/9.0.1/lib中有,也可以从其他地方加入)。

步骤三:代码测试

  • 代码

    #include <stdio.h>
    #include "stdlib.h"
    #include <omp.h>
    
    int main(int argc, const char * argv[]) {
        omp_set_num_threads(8);
    #pragma omp parallel
        printf("hello world!No.%d\n", omp_get_thread_num());
        return 0;
    }
  • 输出示例(因为并行,所以顺序可能不同)

    CV-2020-实践:01 环境的搭建 (OpenCV, OpenMP和OpenCL)

3. OpenCL

  • OpenCL (Open Computing Language),第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码。
  • OpenMP相比,OpenCL关注的是异构系统中GPU的并行,而OpenMP则主要是基于CPU的并行。
  • CUDA相比,两者基本思想相近,只是在Apple和AMD亲近后,NVIDIA的CUDA在MAC上就很难使用了。

步骤一:XCode导入

  • 终于不用下载了,XCode中已经自带,直接在Link Binary With Libraries中加入OpenCL.framework即可,开心。

步骤二:代码测试

  • 大家可以自行网上学习寻找一个代码,进行测试(由于师兄提供的测试代码内容太多,就不再复制在此了。
  • 就此,3大Open (OpenCV, OpenMP 和 OpenCL) 终于安装其活了,祝愿大家也能顺利地配置呢。

参考:

  1. macOS 替换 Homebrew 的源为阿里云 & 清华的源
  2. mac 安装gcc,提示missing xrun的处理办法
  3. Xcode配置opencv4.0.1
  4. OpenMP®/Clang
  5. Xcode使用OpenMP
  6. C++ 实战之OpenCL环境搭建(一)
点赞
收藏
评论区
推荐文章
布袋罗汉 布袋罗汉
2年前
Mac跑分工具 Geekbench 6
Geekbench是一款跨平台的基准测试工具,旨在评估计算机和移动设备的性能。它可以测量CPU和GPU的性能,并提供单核和多核分数以及OpenCL分数等信息。Geekbench还提供了一个比较功能,可以将您的设备性能与其他设备进行比较。它支持macOS、W
Hadoop 及Spark 分布式HA运行环境搭建
本文旨在站在研发的角度上通过手动实践搭建运行环境,文中不拖泥带水过多讲述基础知识,结合Hadoop和Spark最新版本,帮助大家跟着步骤一步步实践环境搭建。
Stella981 Stella981
3年前
CMake与OpenMP
CMake与OpenMPcmake_minimum_required(VERSION2.6)project(TEST)set(TEST_VERSION0.1)set(CMAKE_BUILD_TYPE"Debug")set(CMAKE_CXX_FLAG
Wesley13 Wesley13
3年前
vs2013+opencv3.2配置
  opencv库在3.0以后分为opencv库和opencv\_contrib库两部分,其中opencv\_contrib库是一个扩展库,如果需要使用SIFT和SURF算法就需要安装这个扩展库,否则只用安装opencv库即可。  对于vs2015、vs2017这样的高版本vs有现成的编译好的opencv库,直接安装即可,但是opencv\_contri
Stella981 Stella981
3年前
Qt5.2+opencv2.4.9配置安装过程
Qt5.2Opencv2.4.9的安装与配置安装环境Win10系统Qt5.2.0Opencv2.4.91\.安装Qt5.2.0安装在D:\\Qt\\5.2.0文件夹(记为A文件夹)Qt下载地址:http://download.qtpr
Stella981 Stella981
3年前
OpenCV环境搭建
本文将介绍OpenCV在Python3.x上的实现,分为Window版和Linux版。(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fvipstone%2Ffaceai%2Fblob%2Fmaster%2Fdoc%2Fsettingup.md%23wind
Stella981 Stella981
3年前
SpringBoot使用OpenCV总结
前言最近有个项目需要对图片图像进行处理,使用到了开源框架OpenCV全称是OpenSourceComputerVisionLibrary,是一个跨平台的计算机视觉库;而现在的项目都是基于SpringBoot,需要把OpenCv整合进去,下面把在使用中遇到的问题进行一个汇总整理。下载安装Opencv官网提供了一个多个平台的版
Stella981 Stella981
3年前
OpenMP 旅行商问题,静态调度
▶《并行程序设计导论》第六章中讨论了旅行商,分别使用了MPI,Pthreads,OpenMP来进行实现,这里是OpenMP的代码,分为静态调度(每个线程分分配等量的搜索人物)和动态调度(每个线程分配不等量的任务,每当有线程完成自己的任务后,向其他线程请求新的子任务)●静态调度代码1include<stdio.h
Easter79 Easter79
3年前
SpringBoot使用OpenCV总结
前言最近有个项目需要对图片图像进行处理,使用到了开源框架OpenCV全称是OpenSourceComputerVisionLibrary,是一个跨平台的计算机视觉库;而现在的项目都是基于SpringBoot,需要把OpenCv整合进去,下面把在使用中遇到的问题进行一个汇总整理。下载安装Opencv官网提供了一个多个平台的版
Opencv入门篇:简介与基本使用 | 京东物流技术团队
1Opencv简介Opencv是计算机视觉中经典的专用库,其支持多语言,跨平台,功能强大。OpencvPython为Opencv提供了Python接口,使得使用者在Python中能够调用C/C,在保证易读性和运行效率的前提下,实现所需的功能。Openc
OpenCL任务调度基础介绍 | 京东物流技术团队
当前,科学计算需求急剧增加,基于CPUGPU异构系统的异构计算在科学计算领域得到了广泛应用,OpenCL由于其跨平台特性在异构计算领域渐为流行,其调度困难的问题也随之暴露,传统的OpenCL任务调度需要在编码阶段确定调度方案,这种人工调度难度高、适应性差、
车胄
车胄
Lv1
入春才七日,离家已二年。
文章
2
粉丝
0
获赞
0