Więcej

GDAL createCopy działa naprawdę wolno

GDAL createCopy działa naprawdę wolno


Mam program C++ uruchamiający przetwarzanie OpenCV na obrazach 4096x4096 JPEG2000, które mają metadane geograficzne. Nie chcę modyfikować oryginału, wyniki moich manipulacji obrazem są przechowywane w nowym pliku obrazu. Ponieważ w moim obrazie wynikowym brakuje danych, zaimplementowałem metodę kopiowania w moim programie za pomocąUtwórz kopię()aby skopiować dane obrazu źródłowego do nowego obrazu. Na obrazie 216 kB kopiowanie zajmuje 97 sekund!

próbowałemGDALSetCacheMax(200)i wydaje się, że jest gorzej.

Nie mogę zrozumieć, dlaczego tak mały fragment metadanych trwa dłużej niż moje algorytmy przetwarzania obrazu OpenCV! Proszę pomóż!

Oto przykładowe wyjście GDALINFO dla poprawnego obrazu. Jeśli nie używam CreateCopy, mój nowy obraz nie ma układu współrzędnych, a współrzędne narożników to tylko wymiary w pikselach.

Sterownik: JP2OpenJPEG/JPEG-2000 sterownik oparty na bibliotece OpenJPEG Pliki: .jp2 Rozmiar to 4096, 4096 Układ współrzędnych to: GEOGCS["WGS 84", PUNKT ODNIESIENIA["WGS_1984", SFEROID["WGS 84",6378137,298.257223563, UPRAWNIENIA["EPSG","7030"]], UPRAWNIENIA[" EPSG","6326"]], PRIMEM["Greenwich",0], JEDNOSTKA["stopień",0.0174532925199433], AUTORYTET["EPSG","4326"]] Pochodzenie = (-97.025756835937500,32.398681640625000) Rozmiar piksela = ( 0.000001341104507,-0.000001341104507) Metadane struktury obrazu: INTERLEAVE=PIXEL Współrzędne narożnika: Lewy górny ( -97.0257568, 32.3986816) ( 97d 1'32.72"W, 32d23'55.25"N) Lewy dolny ( -97.0257568, 32.3931885) ( 97d 1'32.72 "W, 32d23'35.48"N) Prawy górny ( -97.0202637, 32.3986816) ( 97d 1'12.95"W, 32d23'55.25"N) Prawy dolny ( -97.0202637, 32.3931885) ( 97d 1'12.95"W, 32d23'35.48 "N) Środek ( -97,0230103, 32,3959351) ( 97d 1'22,84"W, 32d23'45,37"N) Pasmo 1 Blok=1024x1024 Typ=Byte, ColorInterp=Czerwony Przegląd: 2048x2048, 1024x1024, 512x512, 256x256 Przegląd: arbitralny Pasmo 2 Blok=1024x1024 Typ=Byte, ColorInterp=Zielony Przegląd: 2048x2048, 1024x1024, 512x512, 256x256 Ponad widoki: dowolne Band 3 Block=1024x1024 Typ=Byte, ColorInterp=Blue Przeglądy: 2048x2048, 1024x1024, 512x512, 256x256 Przeglądy: dowolne

Kod GDAL:

//GDAL Dane const char *pszFormat = "JPEG2000"; GDALDriver *poDriver; Zbiór danych GDAL *srcZbiór danych; Zbiór danych GDAL *dstZbiór danych; GDALAAllRejestr(); poDriver = GetGDALDriverManager()->GetDriverByName(pszFormat); //Pobierz metadane źródła srcDataset = (GDALDataset *) GDALOpen(imagePath, GA_ReadOnly); //Utwórz nowe dane obrazu imwrite(maskPath, dst); //Zapisz metadane do nowego obrazu dstDataset = poDriver->CreateCopy(maskPath, srcDataset, false, NULL, NULL, NULL); if(dstDataset != NULL) { GDALClose((GDALDatasetH)dstDataset); }

Ten problem został rozwiązany przez naśladowanie zachowania gdalcopyproj.py; ale wymagało aktualizacji do „jeszcze niestabilnego” zestawu kodów GDAL2.0.


Spóźniony na imprezę, ale:
dlaczego po prostu nie skopiujesz nieotwartego pliku, korzystając z narzędzi dostarczonych przez system operacyjny, np.

Kopiuj  

lub przy użyciu biblioteki systemu plików C++

std::system plików::kopia_pliku(, )

a następnie otworzyć i edytować za pomocą GDAL/OpenCV?

Ta operacja kopiowania nie otworzy i nie zdekoduje pliku, więc powinna zostać wykonana w ciągu kilku sekund.


C#: конструктор копирования или конструктор-десериализатор из JSON

По условию задачи мне надо десериализовать объект из JSON:

  1. Есть класс, в нём много свойств. Можно на первом этапе считать, что все свойства - «невложенные», то есть что-то вроде такого:

Сервера приходит сериализованный в JSON объект идентичной структуры (to jest, с теми же свойствами). При этом на клиенте я могу переписать класс как угодно, главное, обы тот е набор свойств можно трансвистит.

Więcej informacji na ten temat: тот JSON передавать w KONSTRUKTORZE

Подключил пакет System.Text.Json, десериализую JSON так:

Но не могу понять, как поместить эту строку кода в конструктор, ведь this доступен только для чтения, то сьести я

Dostępne są między innymi w klasach ContragentPayment w ramach konsorcjum programu, чтобы я мог инициализировать кземплята барк.

Я смотрю пример, и вижу, что в примере конструктора копирования используется перебор всех свойств вручную, мне же не хотелось бы этого делать, так как их достаточно много. То есть мне нужно либо что-то вроде AutoMapper, либо придётся «наступить на свою гордость» и написать блок кода, который сделает это через Odbicie: переберёт свойства, но сделает это автоматически.

Однако, AutoMapper - это лишняя внешняя зависимость, да и вообще - стрельба из пушки по воробьям, а перебор через Odbicie мне кажется вычурным и не соответствующим простоте задачи.

озможно, я упуска какую to очень простую вещь, на уровне базового синтаксиса языка, которая простую вещь? Не посоветуете ли, в какую сторону копать?


Błąd kompilacji przy użyciu żonkila w Visual Studio 2013

Mam problem podczas kompilacji projektu vc++ 6.0 w Visual Studio 2013, używając daffodil , po zmianie projektu na mój nowy komputer.

zanim przenoszę komputer, mój projekt jest w porządku, kompilacja i kompilacja zakończyły się sukcesem, ale po przeniesieniu komputera mam problem,

Jestem pewien, że wszystkie wymagania dotyczące żonkila są poprawnie zainstalowane, takie jak:

to jest mój problem na moim nowym komputerze

i skompiluj i zbuduj wynik na moim starym komputerze

a to są moje nowe właściwości projektu

to są właściwości mojego projektu na starym komputerze

Mam ten sam projekt bez zmiany kodu i te same specyfikacje i konfigurację komputera.


Obejrzyj wideo: GDAL Tutorial #2: Converting, Resampling, Reprojecting, Clipping