c++版本opencv计算灰度图像的轮廓点

代码

cpp 复制代码
#include<iostream>
#include<opencv.hpp>


int main()
{
	std::string imgPath("D:\\prostate_run\\result_US_20230804_141531\\mask\\us\\104.bmp");
	cv::Mat imgGray = cv::imread(imgPath, 0);

	cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));
	cv::morphologyEx(imgGray, imgGray, cv::MORPH_OPEN, kernel);
	
	/*cv::imshow("w", imgGray);
	cv::waitKey();*/

	// 二值化
	cv::Mat binary;
	cv::threshold(imgGray, binary, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU);

	/*cv::imshow("w", binary);
	cv::waitKey();*/

	std::vector<std::vector<cv::Point>> contours;
	std::vector<cv::Vec4i> hierachy;
	cv::findContours(binary, contours, hierachy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);

	std::cout << contours.size() << std::endl;

	// 
	cv::Mat contourImage = cv::Mat::zeros(imgGray.size(), CV_8UC3);
	cv::Scalar redColor = cv::Scalar(0, 0, 255);
	cv::drawContours(contourImage, contours, 0, redColor, 1, cv::LINE_8);
	/*cv::imshow("w", contourImage);
	cv::waitKey();*/

	//
	std::cout << contours[0].size() << std::endl;
	cv::Mat contourImage2 = cv::Mat::zeros(imgGray.size(), CV_8UC3);
	
	for (int i = 0; i < contours[0].size(); ++i)
	{
		cv::Point point = contours[0][i];

		cv::circle(contourImage2, point, 1, redColor, -1);

	}
	cv::imshow("w2", contourImage2);
	cv::waitKey();

	return 0;
}
相关推荐
海盗12341 分钟前
AI科技周刊:2026年5月中旬大模型竞争白热化
人工智能·科技·ai
刘一说1 分钟前
AI科技热点日报 | 2026年5月16日
人工智能·科技
逆境不可逃3 分钟前
Hello-Agents 第一部分总结:从智能体概念到大语言模型基础
人工智能·语言模型·自然语言处理
littlebigbar3 分钟前
亲身体验AI智能体在实际项目中展现的核心能力
人工智能·selenium·测试工具
handler013 分钟前
滑动窗口(同向双指针)算法:模板与例题解析
c语言·c++·笔记·算法·蓝桥杯·双指针·滑动窗口
Android出海4 分钟前
2026主流AI工具对比:ChatGPT、Gemini、Claude、Grok深度分析与选择
人工智能·ai·chatgpt·claude·grok·ai工具·gemini
霍格沃兹测试学院-小舟畅学4 分钟前
AI 测试用例审核 Skill:把用例评审从“凭经验”变成“可评分”
人工智能·测试用例
凌风工具箱6 分钟前
告别流量焦虑|凌风工具箱一键开启流量加速,适配 TEMU/Shein/TK 全平台
大数据·人工智能
langzaibeijing6 分钟前
性价比高的AI应用厂家
大数据·人工智能·python
NOCSAH6 分钟前
统好 AI|长期主义运营,保障智改数转可持续落地
人工智能