我当前正在运行Boofcv的旧版本(0.17),并且想要升级。文档(https://boofcv.org/index.php?title=Download)令人困惑:
使用boofcv的最简单方法是在Maven上引用其jar 中央。请参阅下面的Maven和Gradle代码。 BoofCV被分解成 许多模块。为了更轻松地使用BoofCV的所有核心 可以使用“全部”模块引用功能。个人 “集成”中的模块仍然必须单独引用。
工件列表
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
这是自相矛盾的-我们使用“全部”还是“核心”?
当我介绍boofcv-core
的0.32版本时,会得到许多未解决的引用,例如
Description Resource Path Location Type
ImageFloat32 cannot be resolved to a type BoofCVTest.java
我的问题的三个部分: 图像的基本类型是否已重命名? 旧版代码将如何进行编辑? Maven中默认的库集是什么?
答案 0 :(得分:3)
自0.17以来,已经进行了很多重构,因为事情变得越来越冗长,并且简化了API。例如,ImageFloat32现在为GrayF32。找出所有更改的最简单方法是查看相关的示例代码。
对于模块,请从boofcv-core开始。然后根据需要添加集成中列出的模块。例如,如果您需要android支持,请添加boofcv-android。如果包括boofcv-all,那么您将拥有很多可能不需要的东西,例如Kinect支持。
答案 1 :(得分:1)
为帮助其他正在升级的人,这是我升级到当前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;
}