OpenCV 开发环境的配置
欢迎访问个人博客:https://glumes.com
在 Mac 上折腾了一下 OpenCV 的配置,分别配置了 Python 和 C++ 的开发环境,中间还遇到点坑,简要记录一下。
OpenCV 的安装
OpenCV 的安装有两种方式,可以通过下载源码自行编译,也可以通过homebrew
来安装。
源码编译
通过源码编译可以参考下面这两篇文章:
1、https://www.pyimagesearch.com/2016/12/05/macos-install-opencv-3-and-python-3-5/
2、https://www.pyimagesearch.com/2015/06/29/install-opencv-3-0-and-python-3-4-on-osx/
大致操作都是要从 Github 上下载好源码,然后配置 cmake ,再通过 make 编译出 cv2.so
库。
Homebrew 安装
通过 homebrew 来安装 OpenCV 就相对简单多了。
直接 brew install opencv
命令就好了。
不过,要注意的是:下载好的 OpenCV 还在 /usr/local/Cellar/opencv/3.3.1_1/
目录下。
这时候,在 Terminal 上,直接运行 Python3 命令,然后在交互式环境中通过 import cv2
的命令来导入 OpenCV 的库依旧是找不到的。
解决办法就是进入到 /usr/local/lib/python3.6/site-packages
目录下,通过 ln
命令将 /usr/local/Cellar/opencv/3.3.1_1/lib/python3.6/site-packages
目录下的 cv2.so
链接到当前目录。
///usr/local/lib/python3.6/site-packages 目录下执行如下指令
sudo ln -s /usr/local/Cellar/opencv/3.3.1_1/lib/python3.6/site-packages/cv2.so cv2.so
这样就可以完成导入了。
Python 配置 OpenCV 环境
Python 开发用的 IDE 是 PyCharm。
事实上在 PyCharm 的 Project Interpreter 中可以添加 Python 库的,直接选择 opencv-python
库就好了,它最终也是通过 pip
命令来下载对应的库的。
但却有个问题:
通过这种方式安装的 OpenCV 在运行播放视频的代码时会出错:
import cv2
videoUrl = "/Users/glumes/Desktop/kpt1.mp4"
cap = cv2.VideoCapture('/Users/glumes/Desktop/kpt1.mp4')
while(cap.isOpened()):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
if cv2.waitKey(0) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
报错的内容是:The current event queue and the main event queue are not the same
。
正好在 OpenCV 的 Github 上有个 Issue 也提到了这个问题:https://github.com/opencv/opencv/issues/7474
给出的原因是因为没有安装好 ffmpeg。
所以还是建议直接通过 brew 的方式安装,然后再创建链接好了。
安装好之后,就可以开始运行我们的 OpenCV 代码了。
简单的展示一张图片代码示例:
import cv2
print(cv2.__version__)
imgUrl = '/Users/glumes/Desktop/blog_camera_block.png'
img = cv2.imread(imgUrl,0)
cv2.imshow('image',img)
cv2.waitKey(0)
print("waiting")
cv2.destroyAllWindows()
C++ 配置 OpenCV 环境
C++ 开发用的 Mac 的 Xcode。
首先要在 Xcode 中创建一个命令行工程。
mac-command-line-project然后在工程名处右键,选择 Add File to Project
,通过快捷键 Command+Shift+G
进入到 /usr/local/lib
目录下,将所有和 OpenCV 相关的 dylib
库添加进来。
完成了之后,再到工程的 Build Settings
中去添加对应的头文件和库文件。
找到 Search Paths,然后在 Header Search Paths 中添加
- /usr/local/include
- /usr/local/include/opencv
在 Library Search Paths 中添加
- /usr/local/lib
效果图如下:
xcode_build_setting完成之后,就可以开始编写 C++ 代码来开发 OpenCV 了。
同样还是预览一张图片作为示例:
//
// main.cpp
// OpenCVEnv
//
// Created by glumes on 2017/11/7.
// Copyright © 2017年 glumes. All rights reserved.
//
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv/cvaux.hpp>
#include <fstream>
using namespace std;
#define BYTE unsigned char
int main(int argc, const char * argv[])
{
//这个地方的目录需要改成自己的
IplImage* img = cvLoadImage("/Users/glumes/Desktop/blog_opengl_result_point.png", 1);
cvNamedWindow("picture", 1);
cvShowImage("picture", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("picture");
return 0;
}
点击运行,当编译成功时,就可以看到多了一个命令行窗口,里面就是我们预览的图片内容。
完成了开发环境的配置之后,就可以愉快地进行 OpenCV 开发咯。
参考
1、http://www.jianshu.com/p/11959977589a
觉得文章还不错,可以关注一下微信公众号【纸上浅谈】
Wechat