- Java实现GDAL读取本地图像
- Java实现GDAL读取内存中图像
- Java实现GDAL读取图像转OpenCV支持格式Mat
前言
GDAL可以支持多种影像格式,而OpenCV则可以对影像进行多种操作处理,所以将GDAL与OpenCV结合可以增强影像处理。虽然OpenCV可以读取tif等多种格式,但是在Java中涉及到读取hadoop的value值,读取内存中的影像数据GDAL仍然具有优势。所以本文给出Java操作GDAL读取本地图像、内存中图像的代码。作者本身利用以下代码在hadoop的map中读取value(存储的三波段遥感影像),转换成Mat格式,并使用OpenCV-2.4.9进行meanshift分割。
1.读取内存中影像
//使用OpenCV for Java
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//使用GDAL读取value中的遥感影像
byte[] bytes=value.getBytes();
gdal.AllRegister();
String memFileName="/vsimem/inmenfile";
gdal.FileFromMemBuffer(memFileName, bytes);
Dataset ds=gdal.Open(memFileName, gdalconstConstants.GA_ReadOnly);
//判断是否非空
if(ds==null||ds.GetRasterCount()==0){
return;
}
int xSize=