Suite

GDAL createCopy est vraiment lent


J'ai un programme C++ exécutant un traitement OpenCV sur des images JPEG2000 4096x4096 contenant des métadonnées géographiques. Je ne veux pas modifier l'original, les résultats de mes manipulations d'images sont stockés dans un nouveau fichier image. Comme il manque les données à l'image résultante, j'ai implémenté une méthode de copie dans mon programme en utilisantCréerCopier()pour copier les données de l'image source dans la nouvelle image. Sur une image de 216 Ko, il faut 97 secondes pour copier !

j'ai essayéGDALSetCacheMax(200)et ça a l'air d'être pire.

Je ne comprends pas pourquoi un si petit morceau de métadonnées prend plus de temps que même mes algorithmes de traitement d'images OpenCV ! S'il vous plaît, aidez-vous !

Voici un exemple de sortie GDALINFO pour une image correcte. Si je n'utilise pas CreateCopy, il manque le système de coordonnées à ma nouvelle image et les coordonnées des coins ne sont que les dimensions en pixels.

Pilote : pilote JP2OpenJPEG/JPEG-2000 basé sur la bibliothèque OpenJPEG Fichiers : La taille .jp2 est 4096, le système de coordonnées 4096 est : GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY[" EPSG","6326"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]] Origine = (-97.025756835937500,32.398681640625000) Pixel Size = ( 0,000001341104507,-0,000001341104507) Métadonnées de la structure de l'image : INTERLEAVE=PIXEL Coordonnées du coin : en haut à gauche (-97,0257568, 32,3986816) ( 97d 1'32.72"W, 32d23'55.25"N) En bas à gauche (-97.0257568, 32.3931885) (97d 1'32.72 "W, 32d23'35.48"N) En haut à droite ( -97,0202637, 32.3986816) ( 97d 1'12.95"W, 32d23'55.25"N) En bas à droite ( -97,0202637, 32.3931885) ( 97d 1'12.95"W, 32d23'35.48 "N) Centre (-97.0230103, 32.3959351) ( 97d 1'22.84"W, 32d23'45.37"N) Bande 1 Bloc=1024x1024 Type=Byte, ColorInterp=Rouge Aperçus : 2048x2048, 1024x1024, 512x512, 256x256 Aperçus : arbitraire Bande 2 Block=1024x1024 Type=Byte, ColorInterp=Green Aperçus : 2048x2048, 1024x1024, 512x512, 256x256 Over vues : arbitraire Bande 3 Bloc=1024x1024 Type=Byte, ColorInterp=Bleu Aperçus : 2048x2048, 1024x1024, 512x512, 256x256 Aperçus : arbitraire

Code GDAL :

//GDAL Data const char *pszFormat = "JPEG2000"; GDALDriver *poDriver; GDALDataset *srcDataset; GDALDataset *dstDataset; GDALAllRegister(); poDriver = GetGDALDriverManager()->GetDriverByName(pszFormat); //Obtenir les métadonnées source srcDataset = (GDALDataset *) GDALOpen(imagePath, GA_ReadOnly); //Créer de nouvelles données d'image imwrite(maskPath, dst); //Écrire les métadonnées dans la nouvelle image dstDataset = poDriver->CreateCopy(maskPath, srcDataset, false, NULL, NULL, NULL); if(dstDataset != NULL) { GDALClose((GDALDatasetH)dstDataset); }

Ce problème a été résolu en imitant le comportement de gdalcopyproj.py ; mais cela nécessitait une mise à jour vers le jeu de codes GDAL2.0 "pas encore stable".


En retard à la fête, mais :
pourquoi ne copiez-vous pas simplement le fichier non ouvert, soit en utilisant les outils fournis par votre système d'exploitation, par ex.

copie  

ou en utilisant la bibliothèque du système de fichiers C++

std::filesystem::copy_file(, )

puis l'ouvrir et le modifier avec GDAL/OpenCV ?

Cette opération de copie n'ouvrira pas et ne décodera pas réellement le fichier, elle devrait donc être effectuée en quelques secondes au maximum.


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

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

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

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

не было бы очень удобно этот JSON ередавать в конструктор, чтобы исать что-то вроде ContragentPayment cp = new ContragentPayment(cp_string_as_j

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

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

от если бы у меня в классе ContragentPayment конструктор копирования, чтобы я мог инициализировать емпляр объеугита тобы мог инициализировать емпляр объеугита от если бы у меня в классе

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

нако, AutoMapper -- то лишняя нешняя зависимость, а и вообще -- стрельба из пушки по воробьям, а ереор чересоа стрельба из и по воробьям, а перебор чересоа ерееа из и о воробьям, а еребор чересоа ерео

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


Erreur de compilation à l'aide de jonquille sur Visual Studio 2013

J'ai un problème lors de la compilation du projet vc++ 6.0 dans Visual Studio 2013, à l'aide de Daffodil , après avoir modifié le projet sur mon nouvel ordinateur.

avant de déplacer l'ordinateur, mon projet est bien compilé et construit avec succès, mais après avoir déplacé l'ordinateur, j'ai un problème,

Je suis sûr que toutes les exigences de la jonquille sont correctement installées, telles que :

c'est mon problème, sur mon nouvel ordinateur

et compiler et construire le résultat sur mon ancien ordinateur

et voici mes nouvelles propriétés de projet

ce sont mes propriétés de projet sur l'ancien ordinateur

J'ai le même projet sans changer le code, et les mêmes spécifications et configuration informatiques.