我想用它的边缘形成手的不规则形状,以便我可以使用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);
}
我想要得到一个闭合形状且只有一个轮廓的轮廓。我该怎么做?
最佳答案
您可以尝试对二值图像应用形态学闭合,这应该连接间隙小于结构元素大小的边缘。
关于c++ - OpenCV 获取连接的边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12508049/