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小陈1 小时前
PyTorch DataLoader数据加载性能排查:GPU利用率低的实操指南
人工智能·pytorch·python·深度学习·ai·gpu算力
测试者家园2 小时前
为什么意图驱动测试是自动化测试的下一站,而不是替代品
自动化测试·软件测试·人工智能·持续测试·ai赋能·智能化测试·软件测试变革
D202020203 小时前
TikTok Shop禁止AI语音直播落地后,跨境卖家如何通过达秘合规调整带货内容
人工智能
像风一样自由20204 小时前
20.Milvus常见问题检索不到维度错误和数据一致性
人工智能·大模型·milvus
现代野蛮人4 小时前
【深度学习实验】—— 基于 LSTM 与 Optuna 调参的丙型肝炎预测
人工智能·深度学习·lstm
支支დ4 小时前
VO by Vercel 前端特定优势:为什么它是构建 AI 应用的新范式
前端·人工智能
ZGIAI4 小时前
ZGI 让那些"等你去处理"的事,真正跑起来
人工智能·架构
ZGIAI4 小时前
ZGI:别再做Agent Demo了,先问问它在业务里能不能撑过下周三
人工智能·架构
香芋芋圆5 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展
m0_614523555 小时前
完整教程|输入一句描述,能不能直接生成一段可以继续剪辑的视频:写结构化描述到生成短样片
人工智能·音视频