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;
}
相关推荐
不知名的老吴几秒前
大语言模型:有趣的小实验
人工智能·语言模型·自然语言处理
月走乂山几秒前
AI生成企业官网对比:MiniMax M2.7 vs 智谱GLM-5.1深度评测
人工智能·ai编程·智谱ai·minimax
冬奇Lab2 分钟前
一天一个开源项目(第83篇):karpathy/autoresearch —— 开启 AI“自演化”实验室时代
人工智能·开源·llm
专注VB编程开发20年3 分钟前
2026 年是 “确认牛市后的疯狂”
人工智能
Tartly4 分钟前
双旗舰赋能广电数智化转型 华硕NUC参展第三十二届CCBN2026
大数据·人工智能
weixin_413063214 分钟前
比较阅读理解opencv 和 LuminanceHDR中 色调映射Drago算法
opencv·算法·计算机视觉·hdr·色调映射
ASKED_20198 分钟前
大模型基础123-位置编码
人工智能
Irissgwe11 分钟前
LangChain之聊天模型核心能力
人工智能·langchain·大模型·llm
昇腾CANN14 分钟前
【DeepSeek-V4昇腾首发系列干货】NPU DeepSeek-V4推理优化实践
人工智能·昇腾·cann·deepseek
nancy_princess14 分钟前
Transformer
人工智能·深度学习·transformer