多次元ベクトルを持てないことはわかっています。しかし、ベクトルのセルをポインターとして定義し、この方法で 2 次元ベクトルをシミュレートすることを考えました。コードは次のとおりです。
const char* filename = "D:\\desktop\\IP_ABAD\\images\\1.png";
GDALDataset *poDataset = NULL ;
GDALAllRegister();
poDataset = (GDALDataset *) GDALOpen( filename, GA_ReadOnly );
const int RasterXSize = poDataset -> GetRasterXSize();
const int RasterYSize = poDataset -> GetRasterYSize();
const int RasterCount = poDataset -> GetRasterCount();
CPLErr error = CE_None;
GDALRasterBand *poRasterBand;
poRasterBand = poDataset -> GetRasterBand(1);
GDALDataType eType;
eType = poRasterBand -> GetRasterDataType();
int nbpp = GDALGetDataTypeSize(eType) / 8;
vector<unsigned char> data(RasterXSize * RasterYSize * RasterCount * nbpp);
error = poDataset -> RasterIO(GF_Read,0,0,RasterXSize,RasterYSize,&data[0],RasterXSize,RasterYSize,eType,RasterCount,0,0,0,0);
vector<unsigned char*>SeperateBitsBands(RasterCount * nbpp);
int sizeOfData = (int)data.size();
int sizeOfSeperateBitsBands = (int)SeperateBitsBands.size();
for (int i = 0 ; i < sizeOfSeperateBitsBands ; i++)
{
for ( int j = 0 ; j < sizeOfData ; j++ )
{
if (j%sizeOfSeperateBitsBands == i)
{
SeperateBitsBands[i]-> pushback(data.at(j));
}
}
}
しかし、次の行SeperateBitsBands[i]-> pushback(data.at(j));
でエラーが発生します。
IntelliSense: expression must have pointer-to-class type
error C2227: left of '->pushback' must point to class/struct/union/generic type
このコードでは、最初に画像を開きRasterIO
、「GDAL ライブラリ」から関数ごとにデジタル番号を抽出しました。もちろん、RasterIO は画像を順番に読み取るため、ネストされた 2 つの for ループを使用して画像の一部を分離しようとしました。
たとえば、画像がビット深度 16 でサイズが 300x400 の RGB 画像 (3 つのバンドを持つ) であると仮定すると、seperatedBitsBands は、各セルがサイズ 120000 のベクターを指すサイズ 6 のベクターになります。
昨日、私は次のようなコードを持っていました:
vector<GDALRasterBand*>Bands(RasterCount);
for ( i = 0; i<RasterCount; i++)
{
Bands.at(i) -> RasterIO(..............)
}
しかし、行にそのようなエラーはありませんでしたBands.at(i) -> RasterIO(..............)
。
誰かが私にこのようなことができるか教えてもらえますか?(つまり、2D ベクトルをシミュレートすることを意味します)。もしそうなら、どのように???
そして、なぜエラーが発生しなかったのですBands.at(i) -> RasterIO(..............)
か???
そして、最も重要なことは、多次元ベクトルを使用すると、パフォーマンスと速度に大きな影響を与えることですか?
どうもありがとう。
どんな助けでも大歓迎です。