c++ - OpenCV 获取连接的边

标签 c++ image-processing opencv contour centroid

我想用它的边缘形成手的不规则形状,以便我可以使用http://opencv.itseez.com/doc/tutorials/imgproc/shapedescriptors/moments/moments.html?highlight=moment#code找到这只手的质心。 。精明的功能会切割边缘,所以我无法从中获得良好的轮廓。 这是输出的示例 http://imageshack.us/photo/my-images/208/cannywithblur.png/ 和代码。

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace cv;
using namespace std;

int main(){

    cv::Mat image= cv::imread("open_1a.jpg");
    cv::Mat contours_mat;
    cv::Mat gray_image;

    blur( image, image, Size(3,3) );

    cv::Canny(image,
        contours_mat,
        40,
        120);
    cv::namedWindow("Image");
    cv::imshow("Image",image);
    cv::namedWindow("Canny");
    cv::imshow("Canny",contours_mat);
    cv::waitKey(0);
}

我想要得到一个闭合形状且只有一个轮廓的轮廓。我该怎么做?

最佳答案

您可以尝试对二值图像应用形态学闭合,这应该连接间隙小于结构元素大小的边缘。

Corresponding function in the documentation

Tutorial on morphological operations

关于c++ - OpenCV 获取连接的边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12508049/

相关文章:

c++ - 即使在指定完整路径后也无法在 C++ 中打开文件

c# - 在 .pgm 图像中提取颜色位的最快方法?

python - 使用 PIL 在 python 2.7 中将文本写入图像

python - opencv python在存在间隙的表中添加网格线

c++ - 在 C++ 中使用 OpenCV 从摄像机流式传输视频时程序不会启动

c++ - 使用\in 字符串作为文字而不是转义符

c++ - 使用 MsgPack 通过 ZeroMQ (zmqpp) 发送数据给出 'msgpack::v1::insufficient_bytes' 错误

c++ - 为什么一旦包装 typedef 函数签名与原始签名不匹配

python - 函数正好接受 1 个参数(给定 3 个)?

python - 在 Google App Engine Python 2.7 上安装 opencv