第一步:下载OpenCV开发包(Mac环境)
下载地址:http://opencv.org
第二步:安装Homebrew
安装文档地址:http://brew.sh/index_zh-cn.html
快速安装直接执行以下命令安装:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
第三步:安装CMake(安装好Homebrew之后,可以执行以下命令安装)
CMake是什么:是一个跨平台编译工具
第一种安装方式:下载安装(推荐使用下载安装)
下载官方:https://cmake.org/download/
第二种安装方式:执行命令安装(但是需求提前安装Homebrew)
brew install cmake
第四步:安装OpenCV
1. 进入下载OpenCV解压之后的文件夹
2. 执行命令(依次执行以下命令进行安装)
命令一:mkdir build
命令二:cd build
命令三:cmake -G "Unix Makefiles" ..
命令四:make
命令五:sudo make install
3. 执行完命令,OpenCV安装完成
第五步:新建项目测试
第一步:新建项目(Mac OS->Command Line Tools)
注意:选择C++语言
第二步:在项目build setting->search path进行配置
>Always search User paths : true
>Framework search path: /usr/local/lib
>Header Search Paths :/usr/local/include
>Library Search Paths : /usr/local/lib
第三步:在项目中新建一个文件夹,选"Add files to ...",按 command+shift+g 输入路径 /usr/local/lib,把所有的dylib库导入项目
第四步:测试运行(直接Copy代码运行)
以下为测试Demo
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main( int argc, char** argv ){
string imageName("/Users/yangshaohong/Desktop/2.jpg"); // by default
if( argc > 1) {
imageName = argv[1];
}
Mat image;
image = imread(imageName.c_str(), IMREAD_COLOR); // Read the file
if( image.empty() ){
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
图片叠加效果实现
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <string>
using namespace cv;
void opencvImageSynthesis(Mat mat_image_src, Mat mat_image_dst ){
//第二步:创建叠加区域->开辟了一块内存空间
float X = (mat_image_src.cols - mat_image_dst.cols) *0.5;
float Y = (mat_image_src.rows - mat_image_dst.rows) *0.5;
Mat mat_roi = mat_image_src(Rect2i(X, Y, mat_image_dst.cols, mat_image_dst.rows));
//第三步:图片叠加->加水印->合并之后覆盖原来的图片
//参数一:第一个图片数组
//参数二:第一个图片数组->权重
//参数三:第二个图片数组
//参数四:第二个图片数组->权重
//参数五:权重和基础之上标量值
//参数六:输出数组->输出目标
//dst = src1*alpha + src2*beta + gamma;
//伪代码:mat_roi * 0 + mat_image_dst * 1 + 0
addWeighted(mat_roi, 0, mat_image_dst, 1, 0, mat_roi);
imshow("图片叠加", mat_image_src);
waitKey();
}
图片模糊
void opencvImageblur(Mat mat_image_src){
Mat mat_image_dst;
blur(mat_image_src, mat_image_dst, Size(10,10));
imshow("图片模糊", mat_image_dst);
waitKey();
}
边缘检测
void opencvImageEdgeDetection(Mat mat_image_src){
Mat mat_image_gray;
cvtColor(mat_image_src, mat_image_gray, COLOR_BGR2GRAY);
//使用3*3内核来降噪处理
Mat mat_image_edge;
blur(mat_image_gray, mat_image_edge, Size2i(3, 3));
//进行Canny算子处理
Canny(mat_image_edge, mat_image_edge,3, 9, 3);
imshow("边缘检测", mat_image_edge);
waitKey();
}
图片腐蚀
void opencvImageerode(Mat mat_image_src){
Mat mat_image_dst;
//案例一:图片腐蚀效果
//第二步:进行腐蚀操作
//参数一:腐蚀类型->矩形方式
//参数二:腐蚀大小->范围(腐蚀单位大小)->腐蚀程度大小
Mat mat_element = getStructuringElement(MORPH_RECT, Size2i(5, 5));
erode(mat_image_src, mat_image_dst, mat_element);
imshow("图片腐蚀", mat_image_dst);
waitKey();
}
网友评论