【OPENCV学习】GDAL读取的数据 转为OPENCV类型 并进行最简单的区域生长

本文介绍了如何使用GDAL读取遥感影像TIFF数据,将其转换为OPENCV的Mat类型,以便利用OPENCV的算法。实验结果显示,转换后的图像存在噪声点。代码参考了相关博客,实现了区域生长算法,适用于遥感和医学影像处理。
摘要由CSDN通过智能技术生成

由于遥感影像通常是TIFF数据,OPENCV读取TIFF会出问题,所以采用了先用GDAL读取数据以及影像信息,再转换为OPENCV的Mat类型,这样结合了GDAL强大的支持多种数据格式的能力,又能方便地调用OPENCV的算法函数。

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <gdal.h>
#include <gdal_priv.h>
#include <highgui.h>

using namespace cv;


Mat RegionGrow(Mat src,Point2i pt,int th)
{
	GDALAllRegister();
	Point2i ptGrowing;//待生长点位置
	int nGrowLable=0;//标记是否生长过
	int nSrcValue=0;//生长起点灰度值
	int nCurValue=0;//当前生长点灰度值
	Mat matDst=Mat::zeros(src.size(),CV_8UC1);//创建一个空白区域,填充为黑色
	//生长方向顺序数据
	int DIR[8][2]={
  {-1,-1},{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0}};
	Vector<Point2i> vcGrowPt;//生长点线
	vcGrowPt.push_back(pt);//将生长点压入栈中
	matDst.at<uchar>(pt.y,pt.x)=255;//标记生长点
	nSrcValue=src.at<uchar>(pt.y,pt.x);

	while(!vcGrowPt.empty())//生长栈不为空则生长
	{
		pt=vcGrowPt.ba
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值