【openCV】环境搭建(Xcode)+入门膨胀腐蚀

我本人用的是Mac下的Xcode进行环境搭建,网上有很多搭建教程写的不够详细,现在把过程列出来


一、 环境搭建

话说万事开头难,但是跟着我一步步搭建保证不难!

  1. 首先安装Homebrew,在国内有时候官网是上不去的,可以直接在terminal下执行这个命令
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

如果网络不稳定,有443错误,可以连接国内server试试

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
  1. 通过homebrew安装opencv
brew install opencv
  1. 在Xcode下面创建一个C++文件(Command Line)

  2. 加入Dynamic Library,

    1. 然后按住control键(^)和 slash键(/)
    2. 输入/usr/local/Cellar/opencv
    3. sort by kind找到dylib mach的所有文件
      在这里插入图片描述
      在这里插入图片描述
  3. 加入Header Search Path

    1. 在buidling setting里面搜索Header Search Path
    2. 然后加入你目前opencv4的路径,如:/usr/local/Cellar/opencv/4.5.2_4/include/opencv4,必须是recursive
      在这里插入图片描述
  4. 这时就可以跑opencv了, 注意这里是绝对路径,如果把图片放到了当前路径下想直接运行的话在Xcode下设定,见下方

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main() {
	//这里是绝对路径,不然会报width>0 &&height>0错误
    string path = "Desktop/sample.png";
    Mat img = imread(path); 
	imshow("Img", img);
    waitKey(0);
    
    return 0;
}
  1. 相对路径设定,Working Directory下设定
    在这里插入图片描述
    ,

  2. 还有一个注意事项是,如果创建了另外一个文件作为main.cpp会Build Failed,因此不能像python一样独立运行main函数,需要将上一个main.cpp Delete作为remove reference

二、初识Dilation和Erode

//
//  Dilet_Erode.cpp
//  OpenCV
//
//  Created by Henry on 2021/6/28.
//  Copyright © 2021 Henry. All rights reserved.
//

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;


int main() {
    
    string path = "Resources/test.png";
    
    Mat img = imread(path); //Mat is matrix data type to handle all the img
    
    Mat imgGray, imgBlur, imgCanny, imgDil, imgErode ;
    
    //C++中一般把destination放在函数中,但python会将值传给变量,just keep in mind
    //python写法: imgGray = cvt(img, COLOR_BGR2Gray);
    cvtColor(img, imgGray, COLOR_BGR2GRAY);
    GaussianBlur(img, imgBlur, Size(7,7), 5, 0);
    Canny(img, imgCanny, 25, 100);
    
    Mat kernel = getStructuringElement(MORPH_RECT, Size(5,5)); //注意要是奇数3x3 or 5x5
    dilate(imgCanny, imgDil, kernel);
    erode(imgDil, imgErode, kernel); //Normally create a new kernel
    
    imshow("Img", img);
    imshow("Img Gray", imgGray);
    imshow("Img Gray", imgBlur);
    imshow("Img Gray", imgCanny);
    
    //膨胀和腐蚀的用处:我们可以很好的了解到物体的形状
    imshow("Img Dilation", imgDil);
    imshow("Img Erode", imgErode);
    
    waitKey(0);
    
    return 0;
}


创作不易,如果文章对你有帮助,动动手指点个赞 thank you~ 😃

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值