opencv 凸包检测 convexHull

cpp 复制代码
#include "iostream"
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

int main()
{
	Mat  img, temp, temp2,dst, dstbin, distancetransform,rel, rel2,gary, _threshold, temp3, OPEN;

	img = imread("shou2.jpg");

	resize(img, dst, Size(0, 0), 0.1, 0.1);
	dst.copyTo(temp3);

	cvtColor(dst, gary, COLOR_BGR2GRAY);

	threshold(gary, _threshold, 50, 255, THRESH_TOZERO);

	Mat kernel = getStructuringElement(1, Size(3, 3));

	morphologyEx(_threshold, OPEN, MORPH_OPEN, kernel);

	GaussianBlur(OPEN, temp2, Size(5, 5), 5, 0);

	threshold(temp2, rel, 100, 255, THRESH_BINARY);
	Mat canny;
	Canny(rel, canny, 50, 170, 3, false);

	//Mat kernel = getStructuringElement(1, Size(3, 3));

	//erode(canny, canny, kernel);
	dilate(canny, canny, kernel);

	vector<vector<Point>> contours;
	vector<Vec4i> hierarchy;
	findContours(canny, contours, hierarchy, 0, 2, Point());

	for (int i = 0; i < contours.size(); i++)
	{
		vector<Point> pointss;
		convexHull(contours[i], pointss);
	

		for (int j = 0; j < pointss.size(); j++)
		{
			if (j == pointss.size()-1)
			{
				line(dst, pointss[j], pointss[0], Scalar(0, 0, 255));
				break;
			}
			line(dst, pointss[j], pointss[j + 1], Scalar(0, 0, 255));
		}
	
	}
	imshow("dst", dst);
	imshow("temp3", temp3);
	imshow("canny", canny);

	waitKey(0);

	return 1;
}
相关推荐
新加坡内哥谈技术21 分钟前
文本模式的谎言:为什么现代 TUI 对可访问性而言是一场噩梦
人工智能
傻啦嘿哟26 分钟前
AI训练数据准备:用OpenClaw自动化下载海量图片,如何搭配隧道防封
人工智能
小程故事多_8027 分钟前
[大模型面试系列] 深度解析如何提升AI Agent规划能力,从原理到落地全方案
人工智能·智能体
江南十四行27 分钟前
YOLOv9 从零开始部署实战指南(CPU版本):环境配置、项目搭建与测试详解(二)
人工智能·深度学习
hhzz29 分钟前
(深度学习/计算机视觉)手把手教你从零部署YOLOv8目标检测算法-----环境安装(1/4)
深度学习·yolo·计算机视觉
E等于MC平方31 分钟前
AI 辅助物理课堂实验
人工智能·ai·大模型·模拟·物理·实验
名不经传的养虾人35 分钟前
从0到1:企业级AI项目迭代日记 Vol.17|让 AI 做代码重构,要盯着它的策略,不只是看结果
人工智能·agent·ai编程·ai创业·企业ai
缝艺智研社35 分钟前
誉财 YC - 10 + 双头全自动烫标机:服装商标烫印的高效智能之选
人工智能·自动化·新人首发·缝纫机·智能缝纫机
johnny23336 分钟前
AI Agent社区:Moltbook、虾聊、InStreet、OpenAgents、WorldX
人工智能