I would like to process Landsat8 raw data with OCaml. The data is stored in TIF files. An example of such a file can be found here:
http://landsat-pds.s3.amazonaws.com/L8/139/045/LC81390452014295LGN00/LC81390452014295LGN00_B1.TIF
How can I read a TIF file in OCaml? Is there a library that already does this?
If you're working with a Landsat or other GeoTIFF image you may want to use bindings to GDAL for more complete support: https://github.com/hcarty/ocaml-gdal and http://gdal.org/
GDAL allows you to access the raw values and their geospatial information - location, projection and whatever else is included in the underlying TIFF.
I have not used it in many years, but there is a library named camlimages that claims to support TIF files. You can install it with OPAM.
I want convert .gis(geographic information system) file into .img format. Is this possible in C++? Can any one help me how to do this in C++????
Thanks in advance
You would have to read the .gis file, decipher what it means and redraw that in a manner to your liking.
Check GIS file formats and check how they are stored.
Read that into your program.
Then use a graphics API (SDL/Allegro/OpenGL) and draw the verticies/lines/polygons.
Is it possible to convert a PDF file to cv::Mat?
I know that PDF file is generally vector of objects, but given a required resolution. Is there any tool that can do such a conversion?
OpenCV doesn't support pdf format at all, so you should convert pdf page to image using another library. Read this discussion: Open source PDF library for C/C++ application?
Also this question is similar to yours: What C++ library can I use to convert a PDF to an image on windows?
Is there any way to convert an STL 3D object to a 3ds one by matlab code or C++
AssImp. Import formats and output formats.
c ++ language you can refer to lib3ds. Maybe you can think about the OpenSceneGraph's osgDB plugin. It deal with the stl format and 3ds format.
I need to get the image dimensions of a JPEG in C++. I'm looking for either a fairly simple way to do it or a smallish library that provides that functionality. I'm working in C++ on OpenVMS, so any external libraries may have to be adapted to compile on our systems - so please don't post me links to big, closed source libraries!
Has anyone come across anything that might do the trick, or understand the JPEG file format (I think I probably mean the JFIF file format here) to tell me how I might go about rolling my own solution?
You have this C function which may extract the relevant data for you.
This is a C routine but should compile fine with C++.
Pass it a normal FILE pointer (from fopen) to the beginning of a jpeg file and two int pointers to be set with the image height and width.
Or you may find in the Boost library a jpeg class which has the right function (From Adobe Generic Image Library).
jpeg_read_dimensions
boost::gil::jpeg_read_dimensions (const char *filename)
Returns the width and height of the JPEG file at the specified location. Throws std::ios_base::failure if the location does not correspond to a valid JPEG file.
libjpeg is reasonably small, open source and available on OpenVMS. It's probably quicker to install it than to handle JPEG yourself.
Maybe libjpeg?
You should be able to use this jpeg lib with this patch for OpenVMS
No need for full libjpeg library just to get this information (unless you need to do something else with the images). ImageInfo might help you. It is a Java class, but there are ports for other languages, including C++.
As pointed out, Exif might change these information (eg. with orientation setting).
You may want to try GDAL library which serves as an abstraction layer for large number of raster data formats, mostly used in geospatial applications for GIS/RS.
GDAL provides number of APIs, for C, C++ and scripting languages. Of course, it supports JPEG images and its variants like JPEG2000 and more.
Here is a very simple example how to open JPEG image and query its dimensions:
#include <gdal_priv.h>
GDALAllRegister(); // call ones in your application
GDALDataset* ds = (GDALDataset*)GDALOpen("my.jpeg", GA_ReadOnly);
int width = ds->GetRasterXSize();
int height = ds->GetRasterYSize(),
int nbands = ds->GetRasterCount();
Check GDAL API tutorial for more complete example.