91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

原料:C++、gdal 功能:讀取影像數據,計算其對比度,可適用于多波段遙感影像。 算法:各中心像素灰度值與周圍4近鄰像素灰度值求差,取平方求和,再除以參與求差運算的次數。內容包含(CContrast.h+CContrast.cpp+main.cpp),輸入影像路徑可直接運行,輸出影像對比度計算結果,高效快捷。

資源截圖

代碼片段和文件信息

#include?“CContrast.h“

/*
41\42\43行要修改,輸入nBandCount波段數的實際值,不然報錯
*/
CContrast::CContrast()
{
}

CContrast::~CContrast()
{
}

float?*?CContrast::contrast(string?path)
{
//path:?輸入影像路徑;
//1.?讀取影像獲取影像信息
GDALDataset?*poDataset1;//GDAL數據集
//GDALDriver?*poDriver1;//GDAL驅動用于創建新的文件
GDALAllRegister();
poDataset1?=?(GDALDataset*)GDALOpen(path.c_str()?GA_ReadOnly);

//確認影像是否讀入
if?(poDataset1?==?NULL)
{
cout?< }
else?{
cout?< }

//獲取影像的長、寬、波段數及投影信息
int?nBandCount?=?poDataset1->GetRasterCount();
int?nImgSizeX?=?poDataset1->GetRasterXSize();
int?nImgSizeY?=?poDataset1->GetRasterYSize();

//申請內存空間
float*?pBuf1?=?new?float[nImgSizeX?*?nImgSizeY?*?nBandCount];
memset(pBuf1?0?nImgSizeX?*?nImgSizeY?*?nBandCount?*?sizeof(float));

int?num[nBandCount]?=?{?0?};?//輸入nBandCount波段數的實際值,不然報錯
float?sum[nBandCount]?=?{?0.0?};//輸入nBandCount波段數的實際值,不然報錯
float?*contrast?=?new?float[nBandCount];//輸入nBandCount波段數的實際值,不然報錯
memset(contrast?0?nBandCount?*?sizeof(float));

//讀取當前數據
poDataset1->RasterIO(GF_Read?0?0?nImgSizeX?nImgSizeY?pBuf1?nImgSizeX?nImgSizeY?GDT_Float32?nBandCount?0?0?0?0);

//圖像的上下左右邊界均向外擴充+1
//申請內存空間
float*?pBuf2?=?new?float[(nImgSizeX+2)?*?(nImgSizeY+2)?*?nBandCount];
memset(pBuf2?0?(nImgSizeX?+?2)?*?(nImgSizeY?+?2)?*?nBandCount?*?sizeof(float));

int?i?j;
for?(int?nnum?=?0;?nnum? {
for?(j?=?0;?j {
if?(j?==?0)
{
for?(i?=?1;?i {
float*?pData10?=?pBuf2?+?nnum*(nImgSizeX?+?2)*(nImgSizeY?+?2)?+?j*(nImgSizeX?+?2)?+?i;
float*?pData11?=?pBuf1?+?nnum*nImgSizeX*nImgSizeY?+?j*nImgSizeX?+?i-1;
*pData10?=?*pData11;
}
}
else?if?(j?==?nImgSizeY?+?1)???//pSrc倒數第二行的值賦給pBuf1?的倒數第一行
{
for?(i?=?1;?i {
float*?pData20?=?pBuf2?+?nnum*(nImgSizeX?+?2)*(nImgSizeY?+?2)?+?j*(nImgSizeX?+?2)?+?i;
float*?pData21?=?pBuf1?+?nnum*nImgSizeX*nImgSizeY?+?(j-2)*nImgSizeX?+?i?-?1;
*pData20?=?*pData21;
}
}
else
{
for?(i?=?0;?i {
if?(i?==?0)?????????//pSrc第二列的值賦給pBuf1?的第一列
{
float*?pData30?=?pBuf2+?nnum*(nImgSizeX?+?2)*(nImgSizeY?+?2)?+?j*(nImgSizeX?+?2)?+?i;
float*?pData31?=?pBuf1?+?nnum*nImgSizeX*nImgSizeY?+?(j-1)*nImgSizeX?+?i?;
*pData30?=?*pData31;
}
else?if?(i?==?nImgSizeX?+?1)
{
float*?pData40?=?pBuf2?+?nnum*(nImgSizeX?+?2)*(nImgSizeY?+?2)?+?j*(nImgSizeX?+?2)?+?i;
float*?pData41?=?pBuf1?+?nnum*nImgSizeX*nImgSizeY?+?(j?-?1)*nImgSizeX?+?i-2;
*pData40?=?*pData41;
}
else
{
float*?pData50?=?pBuf2?+?nnum*(nImgSizeX?+?2)*(nImgSizeY?+?2)?+?j*(nImgSizeX?+?2)?+?i;
float*?pData51?=?pBuf1?+?nnum*nImgSizeX*nImgSizeY?+?(j?-?1)*nImgSizeX?+?i-1;
*pData50?=?*pData51;
}
}
}
}
}

////對當前數據進行處理
for?(int?nnum?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4333??2020-08-19?17:43??Contrast\CContrast.cpp
?????文件?????????240??2020-08-18?22:47??Contrast\CContrast.h
?????文件?????????378??2020-08-19?17:39??Contrast\main.cpp

評論

共有 條評論