我正在尝试编写一个程序,可以创建一个特定对象周围的多边形(任意数量的边),并找到多边形的质心.为此,我选择使用convexhull和findContours函数.在以下程序中,您将获得两个窗口.一个窗口包含用于更改过滤器的HSV和形态值的轨道栏,另一个窗口包含过滤后的图像.过滤图像并获得二进制图像后,您必须单击"c"以查找轮廓,然后单击"h"以查找凸包.过滤图像和执行形态学操作不是问题.主要问题是找到轮廓.
#include<iostream>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
#include<opencv2\core\core.hpp>
#include<opencv2\video\background_segm.hpp>
#include<Windows.h>
using namespace cv;
using namespace std;
//functions prototypes
void on_trackbar(int, void*);
void createTrackbars();
void showimgcontours(Mat &threshedimg, Mat &original);
void toggle(int key);
void morphit(Mat &img);
void blurthresh(Mat &img);
//function prototypes ends here
//boolean toggles
bool domorph = false;
bool doblurthresh = false;
bool showchangedframe = false;
bool showcontours = false;
bool showhull = false;
//boolean toggles end
int H_MIN = 0;
int H_MAX = 255;
int S_MIN = 0;
int S_MAX = 255;
int …Run Code Online (Sandbox Code Playgroud)