Обновление до последней версии Boofcv - PullRequest
0 голосов
/ 04 января 2019

В настоящее время я использую старую версию (0.17) Boofcv и хочу обновить ее.Документация (https://boofcv.org/index.php?title=Download) сбивает с толку:

Самый простой способ использовать boofcv - это ссылаться на его jar-файлы в Maven Central.Ниже приведен код Maven и Gradle.BoofCV разбит на множество модулей.Чтобы упростить использование BoofCV, на все его основные функции можно ссылаться с помощью модуля «all».Отдельные модули в «интеграции» по-прежнему должны ссылаться по отдельности.

Список артефактов

boofcv-core : All the core functionality of BoofCV
boofcv-all : All the core and integration packages in BoofCV. YOU PROBABLY WANT CORE AND NOT THIS

Это противоречиво - мы используем «все» или «ядро»?

Когда я представляю 0,32 версию boofcv-core, я получаю много неразрешенных ссылок, таких как Description Resource Path Location Type ImageFloat32 cannot be resolved to a type BoofCVTest.java

Три части моего вопроса: переименованы ли основные типы для изображений?Как старый код нуждается в редактировании?Что такое набор библиотек по умолчанию в Maven?

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Чтобы помочь другим, кто обновляется, вот пример изменений, которые я сделал для обновления до текущей Boofcv. Они не кажутся слишком сложными; Я просто использовал s/ImageUInt/GrayU/g и аналогично для других типов. До сих пор я нашел только один метод, который нужно изменить (VisualizeBinaryData.renderBinary).

/** thresholds an image
 * uses BoofCV 0.32 or later
 * NOT YET TESTED
 * 
 * @param image
 * @param threshold 
 * @return thresholded BufferedImage
 */

/* WAS Boofcv 0.17
public static BufferedImage boofCVBinarization(BufferedImage image, int threshold) {
    ImageUInt8 input = ConvertBufferedImage.convertFrom(image,(ImageUInt8)null);
    ImageUInt8 binary = new ImageUInt8(input.getWidth(), input.getHeight());
    ThresholdImageOps.threshold(input, binary, threshold, false);
    BufferedImage outputImage = VisualizeBinaryData.renderBinary(binary,null);
    return outputImage;
}
The changes are ImageUInt8 => GrayU8 (etc.) 
VisualizeBinaryData.renderBinary(binary,null) => ConvertBufferedImage.extractBuffered(binary)

It compiles - but haven't yet run it.

 */
public static BufferedImage boofCVBinarization(BufferedImage image, int threshold) {

    GrayU8 input = ConvertBufferedImage.convertFrom(image,(GrayU8)null);
    GrayU8 binary = new GrayU8(input.getWidth(), input.getHeight());
    ThresholdImageOps.threshold(input, binary, threshold, false);
    BufferedImage outputImage = ConvertBufferedImage.extractBuffered(binary);
    return outputImage;
}
0 голосов
/ 05 января 2019

После 0.17 было много рефакторинга из-за того, как многословно все становилось и для упрощения API.Например, ImageFloat32 теперь GrayF32.Самый простой способ выяснить все изменения - взглянуть на соответствующий пример кода.

Для модулей начните с boofcv-core.Затем добавьте модули, перечисленные в интеграции по мере необходимости.Например, если вам нужна поддержка Android, добавьте boofcv-android.Если вы включите boofcv-all, у вас будет много вещей, которые вам, вероятно, не нужны, например, поддержка Kinect.

...