opencv解析系列 - 基于DOM提取大面积植被(如森林)

2024-03-07 16:28

本文主要是介绍opencv解析系列 - 基于DOM提取大面积植被(如森林),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Note:简单提取,不考虑后处理(填充空洞、平滑边界等)

#include <iostream>
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include <opencv2/opencv.hpp>
using namespace cv;#pragma comment(lib,"opencv_world490d.lib")
int main(int, char**)
{// 读取图像cv::Mat originalImage = cv::imread("D:\\OpenCV\\1.jpg");cv::Mat image = cv::imread("D:\\OpenCV\\1.jpg", cv::IMREAD_GRAYSCALE);// 应用阈值处理cv::Mat binaryImage;cv::threshold(image, binaryImage, 128, 255, cv::THRESH_BINARY);// 可以使用滤波、边缘检测等方法进行图像处理和增强// 可以使用特征提取、目标检测等方法进行建筑物识别//创建结构元素cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(10, 10));//膨胀cv::Mat dilateImage;cv::dilate(binaryImage, dilateImage, kernel, cv::Point(0, 0), 3);//腐蚀cv::Mat erodedImage;cv::erode(dilateImage, erodedImage, kernel);// 颜色反转cv::bitwise_not(erodedImage, erodedImage);// 寻找轮廓std::vector<std::vector<cv::Point>> contours;cv::findContours(erodedImage, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);// 绘制轮廓cv::Mat contourImage = cv::Mat::zeros(image.size(), CV_8UC3);cv::drawContours(contourImage, contours, -1, cv::Scalar(0, 255, 0),2);//将轮廓叠加到原始图片上Mat resultImage;addWeighted(originalImage, 0.7, contourImage, 0.3, 0, resultImage);// 创建窗口并显示图片cv::imshow("Original Image", originalImage);//cv::imshow("Tree", contourImage);cv::imshow("Tree", resultImage);// 等待按键退出cv::waitKey(0);// 销毁窗口cv::destroyAllWindows();
}

处理效果:
在这里插入图片描述

这篇关于opencv解析系列 - 基于DOM提取大面积植被(如森林)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/784113

相关文章

JavaScript DOM操作与事件处理方法

《JavaScriptDOM操作与事件处理方法》本文通过一系列代码片段,详细介绍了如何使用JavaScript进行DOM操作、事件处理、属性操作、内容操作、尺寸和位置获取,以及实现简单的动画效果,涵... 目录前言1. 类名操作代码片段代码解析2. 属性操作代码片段代码解析3. 内容操作代码片段代码解析4.

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象