内容概述
将多波段各个像素灰度值加和,并且在保留仿射参数和投影信息情况下生成单波段图像,用于经典算法(otsu,em等)本文将以otsu为例,生成简单二值图像
原基于pie二次开发,摘取部分函数算法成文,记录学习过程,有需求的话后续会分享pie二次开发学习过程
环境
语言:C++【100%】
vs版本:【2015】
GDAL版本:【2.3.X】
OPENCV版本:【3.x】
多波段图像压缩
将多波段各个像素灰度值加和,并且在保留仿射参数和投影信息情况下生成单波段图像,用于经典算法(otsu,em等)本文将以otsu为例
代码部分
注释标注的还算全面
头文件
#pragma once
#define BYTE unsigned char
class Arr
{
public:
int imgX = 0;
int imgY = 0;
GDALDataType datatype;
double* EndArr = new double[imgX * imgY];
BYTE *EndImg = (BYTE *)CPLMalloc(sizeof(double)*imgX*imgY);
};
void GdalAlgo(const char* filepath1, const char* filepath2, Arr &arr);
源文件
#include "gdal_priv.h"
#include"Algo.h"
#include<iostream>
using namespace std;
void toGeoCoord(int x, int y, double* coords, double* transform)
{
coords[0] = transform[0] + x * transform[1] + y * transform[2];
coords[1] = transform[3] + x * transform[4] + y * transform[5];
}
void GdalAlgo(const char* filepath1, const char* filepath2, Arr &arr)
{
GDALAllRegister