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;
}
相关推荐
数字时代全景窗23 分钟前
Palantir:两个不确定的问题(1)大模型以上,世界模型未满?
人工智能·软件工程
njidf24 分钟前
C++中的观察者模式
开发语言·c++·算法
和沐阳学逆向24 分钟前
断层碾压 Opus!Anthropic 最强模型泄露,代号「卡皮巴拉」
人工智能
IAUTOMOBILE25 分钟前
C++ 入门基础:开启编程新世界的大门
java·jvm·c++
Swift社区25 分钟前
鸿蒙游戏里的 AI Agent 设计
人工智能·游戏·harmonyos
剑穗挂着新流苏31228 分钟前
202_深度学习的动力源泉:矩阵微积分与自动求导 (Autograd)
人工智能·pytorch·python·深度学习·神经网络
陆业聪31 分钟前
AI 时代最被低估的工程师技能:把需求写清楚
android·人工智能·aigc
艾莉丝努力练剑34 分钟前
alarm系统调用的一次性原理揭秘
linux·运维·服务器·开发语言·网络·人工智能·学习
-许平安-34 分钟前
MCP项目笔记七(插件 calculator)
c++·笔记·json·plugin·mcp
陈天伟教授38 分钟前
人工智能应用- AI 增强显微镜:08.实时辅助诊断
人工智能·神经网络·机器学习·推荐算法