ubuntu22.04@laptop OpenCV Get Started: 013_contour_detection

1. 源由

使用轮廓检测检测物体的边界,通常是许多有趣应用的第一步,如图像前景提取、简单的图像分割、检测和识别。

罗列一些使用轮廓进行运动检测或分割应用:

  • 运动检测:在监控视频中,运动检测技术有许多应用,包括室内和室外安全环境、交通控制、体育活动中的行为检测、无人看管物体的检测,甚至视频压缩。在下图中,可以看到检测视频流中的人员移动在监控应用程序中是如何有用的。请注意,未检测到静止在图像左侧的那组人。只有运动中的人才会被捕捉到。请参考《Moving Object Detection and Segmentation using Frame differencing and Summing Technique》详细研究这种方法。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. 应用Demo

013_contour_detection是OpenCV通过鼠标指针和轨迹条与用户交互的示例。

2.1 C++应用Demo

C++应用Demo工程结构:

013_contour_detection/CPP$ tree .                                              .
├── channel_experiments
│   ├── channel_experiments.cpp
│   └── CMakeLists.txt
├── contour_approximations
│   ├── CMakeLists.txt
│   └── contour_approx.cpp
└── contour_extraction
    ├── CMakeLists.txt
    └── contour_extraction.cpp

3 directories, 6 files

确认OpenCV安装路径:

$ find /home/daniel/ -name "OpenCVConfig.cmake"
/home/daniel/OpenCV/installation/opencv-4.9.0/lib/cmake/opencv4/
/home/daniel/OpenCV/opencv/build/OpenCVConfig.cmake
/home/daniel/OpenCV/opencv/build/unix-install/OpenCVConfig.cmake


$ export OpenCV_DIR=/home/daniel/OpenCV/installation/opencv-4.9.0/lib/cmake/opencv4/

C++应用Demo工程编译执行:

$ mkdir build
$ cd build
$ cmake ..
$ cmake --build . --config Release
$ cd ..
$ ./build/channel_experiments
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build . --config Release
$ cd ..
$ ./build/contour_approximations
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build . --config Release
$ cd ..
$ ./build/contour_extraction

2.2 Python应用Demo

Python应用Demo工程结构:

013_contour_detection/Python$ tree .
.
├── channel_experiments
│   └── channel_experiments.py
├── contour_approximations
│   └── contour_approx.py
├── contour_extraction
│   └── contour_extraction.py
└── requirements.txt

3 directories, 4 files

Python应用Demo工程执行:

$ workoncv-4.9.0
$ python channel_experiments.py
$ python contour_approx.py
$ python contour_extraction.py

3. contour_approx应用

在OpenCV中检测和绘制轮廓的步骤如下所示:

  1. 读取图像并将其转换为灰度格式
  2. 应用二进制阈值过滤算法
  3. 查找对象轮廓
  4. 绘制对象轮廓

查找轮廓可以采用两种方式:

  • CHAIN_APPROX_SIMPLE
  • CHAIN_APPROX_NONE

3.1 读取图像并将其转换为灰度格式

读取图像并将图像转换为灰度格式。将图像转换为灰度非常重要,因为它为下一步的图像做准备。

将图像转换为单通道灰度图像对于阈值处理很重要,这反过来又是轮廓检测算法正常工作所必需的。

C++:

    // read the image
    Mat image = imread("../../input/image_1.jpg");
    // convert the image to grayscale format
    Mat img_gray;
    cvtColor(image, img_gray, COLOR_BGR2GRAY);

Python:<

<think>好的,我现在要解决用户遇到的Git克隆时权限被拒绝的问题,具体错误是“Permission denied (publickey)”。首先,我需要回忆一下常见的导致这个错误的原因以及解决方法。 根据用户提供的引用内容,特别是引用[2]和[4],问题通常与SSH密钥有关。用户可能没有正确设置SSH密钥对,或者公钥没有被添加到GitHub账户中。此外,SSH代理未运行或密钥权限设置不正确也可能导致这个问题。 首先,我应该检查用户是否生成了SSH密钥。如果没有生成,需要使用ssh-keygen命令生成新的密钥对。生成后,公钥(id_rsa.pub)需要添加到GitHub的SSH设置中,如引用[2]所述。如果密钥已经存在,可能需要检查是否添加到ssh-agent中,确保代理正在运行,并且密钥被正确加载。 另外,引用[3]中提到,首次连接GitHub时,系统会询问是否信任主机,用户需要输入yes以将GitHub添加到已知主机列表。如果用户跳过了这一步,可能导致连接问题。需要检查~/.ssh/known_hosts文件是否存在GitHub的记录。 还有,文件的权限问题也可能导致SSH拒绝密钥。例如,私钥文件(id_rsa)的权限过松,SSH会认为不安全而拒绝使用。需要确保.ssh目录的权限是700,私钥是600。 接下来,我应该按照步骤引导用户逐步排查这些问题。首先验证SSH密钥是否存在,然后确认公钥已添加到GitHub,接着检查ssh-agent的状态,确认主机密钥是否被接受,最后检查文件权限。如果所有步骤都正确,可能需要测试连接以进一步诊断。 另外,用户可能混淆了HTTPS和SSH的克隆方式。如果用户使用的是SSH URL,必须配置SSH密钥;如果使用HTTPS,可能需要改用账号密码或者个人访问令牌。不过根据错误信息,用户明确使用的是SSH协议,所以重点在SSH配置上。 最后,如果问题仍然存在,建议用户使用ssh -T命令测试连接,查看详细的错误信息,这有助于进一步定位问题。例如,如果连接被拒绝,可能是网络问题或GitHub服务问题,但根据错误提示,更可能还是密钥配置的问题。</think>以下是解决Git克隆出现`Permission denied (publickey)`问题的分步指南: --- ### **步骤1:检查SSH密钥是否存在** 1. 打开终端(Windows用户使用Git Bash)。 2. 输入命令: ```bash ls ~/.ssh/id_rsa.pub ``` - 如果显示文件存在,跳到**步骤2**。 - 如果显示`No such file`,需要生成SSH密钥。 **生成SSH密钥**: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 按提示输入保存路径(默认直接回车)和密码(可选)。 --- ### **步骤2:将公钥添加到GitHub** 1. 复制公钥内容: ```bash cat ~/.ssh/id_rsa.pub ``` - Windows路径为`C:\Users\用户名\.ssh\id_rsa.pub`[^2]。 2. 登录GitHub → Settings → SSH and GPG keys → New SSH key。 3. 粘贴公钥内容并保存。 --- ### **步骤3:启动SSH代理** 确保SSH代理运行并将私钥添加到代理: ```bash eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa ``` --- ### **步骤4:验证主机信任** 首次连接GitHub时需确认主机指纹: ```bash ssh -T git@github.com ``` 输入`yes`接受指纹(参考引用[3]中的提示)。 --- ### **步骤5:检查文件权限** 确保密钥文件权限正确: ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa ``` --- ### **步骤6:测试SSH连接** 验证配置是否成功: ```bash ssh -T git@github.com ``` 若显示`You've successfully authenticated`则配置成功。 --- ### **其他可能原因** 1. **使用错误的仓库地址**:确认克隆地址为SSH格式(`git@github.com:user/repo.git`),而非HTTPS。 2. **多密钥冲突**:若存在多个密钥,需通过`~/.ssh/config`指定对应密钥。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值