4#ifndef OPENCV_slideio_tifftools_HPP
5#define OPENCV_slideio_tifftools_HPP
9#include "slideio/imagetools/slideio_imagetools_def.hpp"
10#include "slideio/base/resolution.hpp"
11#include "slideio/base/slideio_enums.hpp"
12#include "slideio/base/base.hpp"
13#include <opencv2/core.hpp>
17#include "imagetools.hpp"
35 int bitsPerSample = 0;
37 int YCbCrSubsampling[2];
39 uint32_t compression = 0;
43 std::string description;
45 std::vector<TiffDirectory> subdirectories;
47 cv::Point2d position = {};
48 bool interleaved =
false;
50 DataType dataType = DataType::DT_Unknown;
52 int compressionQuality = 0;
53 uint64_t byteOffset = 0;
56 SLIDEIO_IMAGETOOLS_EXPORTS std::ostream& operator<<(std::ostream& os,
const TiffDirectory& dir);
57 SLIDEIO_IMAGETOOLS_EXPORTS std::ostream& operator<<(std::ostream& os,
const std::vector<TiffDirectory>& dirs);
59 class SLIDEIO_IMAGETOOLS_EXPORTS TiffTools
62 static libtiff::TIFF* openTiffFile(
const std::string& path,
bool readOnly=
true);
63 static void closeTiffFile(libtiff::TIFF* file);
64 static void setCurrentDirectory(libtiff::TIFF* tiff,
int dirIndex, int64_t dirOffset);
65 static void scanTiffDirTags(libtiff::TIFF* tiff,
int dirIndex, int64_t dirOffset, slideio::TiffDirectory& dir);
66 static void scanTiffDir(libtiff::TIFF* tiff,
int dirIndex, int64_t dirOffset, slideio::TiffDirectory& dir);
67 static void scanFile(libtiff::TIFF* file, std::vector<TiffDirectory>& directories);
68 static void scanFile(
const std::string& filePath, std::vector<TiffDirectory>& directories);
69 static void readNotRGBStripedDir(libtiff::TIFF* tiff,
const TiffDirectory& dir, cv::_OutputArray output);
70 static void readRegularStripedDir(libtiff::TIFF* file,
const slideio::TiffDirectory& dir, cv::OutputArray output);
71 static void readPlanarStripedDir(libtiff::TIFF* tiff,
const TiffDirectory& dir, cv::OutputArray output);
72 static void readDirRaster(
const std::string& filePath,
int dir, cv::OutputArray output);
73 static void readDirRaster(libtiff::TIFF* tiff,
const TiffDirectory& dir, cv::OutputArray output);
74 static void readTiledDir(libtiff::TIFF* tiff,
const TiffDirectory& dir, cv::OutputArray output);
75 static void readStripedDir(libtiff::TIFF* file,
const slideio::TiffDirectory& dir, cv::OutputArray output);
76 static void readTile(libtiff::TIFF* hFile,
const slideio::TiffDirectory& dir,
int tile,
77 const std::vector<int>& channelIndices, cv::OutputArray output);
78 static void setCurrentDirectory(libtiff::TIFF* hFile,
const slideio::TiffDirectory& dir);
79 static void scaleBlockToDirectory(
const TiffDirectory& basisDir,
const TiffDirectory& dir,
80 const cv::Rect& basisDirRect, cv::Rect& dirBlockRect);
81 static void readJ2KTile(libtiff::TIFF* hFile,
const slideio::TiffDirectory& dir,
int tile,
82 const std::vector<int>& channelIndices, cv::OutputArray output);
83 static void readRegularTile(libtiff::TIFF* hFile,
const slideio::TiffDirectory& dir,
int tile,
84 const std::vector<int>& channelIndices, cv::OutputArray output);
85 static void readNotRGBTile(libtiff::TIFF* hFile,
const slideio::TiffDirectory& dir,
int tile,
86 const std::vector<int>& channelIndices, cv::OutputArray output);
87 static void writeDirectory(libtiff::TIFF* tiff);
88 static void setTags(libtiff::TIFF* tiff,
const TiffDirectory& dir);
89 static void initSubDirs(libtiff::TIFF* tiff,
int numDirs);
90 static void writeTile(libtiff::TIFF* tiff,
int x,
int y, Compression compression,
91 const cv::Mat& tileRaster,
const EncodeParameters& parameters,
92 uint8_t* buffer=
nullptr,
int bufferSize=0);
93 static std::string readStringTag(libtiff::TIFF* tiff, uint16_t tag);
94 static int getNumberOfDirectories(libtiff::TIFF* tiff);
Definition: exceptions.hpp:15
Compression
raster data compression enum
Definition: slideio_enums.hpp:12