6#include "slideio/core/slideio_core_def.hpp"
7#include "slideio/base/resolution.hpp"
8#include "slideio/base/slideio_enums.hpp"
9#include "slideio/core/metadata.hpp"
10#include <opencv2/core.hpp>
14#include "refcounter.hpp"
17#include "levelinfo.hpp"
20#pragma warning( push )
21#pragma warning(disable: 4251)
37 class SLIDEIO_CORE_EXPORTS
CVScene :
public RefCounter
44 virtual int getSceneIndex()
const = 0;
45 virtual const std::string& getDriverId()
const = 0;
74 virtual std::string getChannelName(
int channel)
const;
96 virtual void readBlock(
const cv::Rect& blockRect, cv::OutputArray output);
106 virtual void readBlockChannels(
const cv::Rect& blockRect,
const std::vector<int>& channelIndices, cv::OutputArray output);
117 virtual void readResampledBlock(
const cv::Rect& blockRect,
const cv::Size& blockSize, cv::OutputArray output);
129 virtual void readResampledBlockChannels(
const cv::Rect& blockRect,
const cv::Size& blockSize,
const std::vector<int>& channelIndices, cv::OutputArray output);
141 virtual void read4DBlock(
const cv::Rect& blockRect,
const cv::Range& zSliceRange,
const cv::Range& timeFrameRange, cv::OutputArray output);
154 virtual void read4DBlockChannels(
const cv::Rect& blockRect,
const std::vector<int>& channelIndices,
const cv::Range& zSliceRange,
const cv::Range& timeFrameRange, cv::OutputArray output);
167 virtual void readResampled4DBlock(
const cv::Rect& blockRect,
const cv::Size& blockSize,
const cv::Range& zSliceRange,
const cv::Range& timeFrameRange, cv::OutputArray output);
181 virtual void readResampled4DBlockChannels(
const cv::Rect& blockRect,
const cv::Size& blockSize,
const std::vector<int>& channelIndices,
const cv::Range& zSliceRange,
const cv::Range& timeFrameRange, cv::OutputArray output);
188 return static_cast<int>(m_auxNames.size());
193 virtual std::shared_ptr<CVScene> getAuxImage(
const std::string& imageName)
const;
197 const Metadata& getMetadata()
const;
198 virtual void readResampledBlockChannelsEx(
const cv::Rect& blockRect,
const cv::Size& blockSize,
199 const std::vector<int>& componentIndices,
int zSliceIndex,
int tFrameIndex, cv::OutputArray output) = 0;
200 virtual int getNumZoomLevels()
const;
201 virtual const LevelInfo* getZoomLevelInfo(
int level)
const;
202 std::string toString()
const;
212 const Metadata& getChannelAttributes()
const;
215 virtual void setChannelAttribute(
int channelIndex,
const std::string& attributeName,
const std::string& attributeValue);
217 virtual void setChannelAttribute(
int channelIndex,
const std::string& attributeName,
const char* attributeValue);
219 virtual void setChannelAttribute(
int channelIndex,
const std::string& attributeName,
bool attributeValue);
221 virtual void setChannelAttribute(
int channelIndex,
const std::string& attributeName, int64_t attributeValue);
223 virtual void setChannelAttribute(
int channelIndex,
const std::string& attributeName,
double attributeValue);
224 std::vector<int> getValidChannelIndices(
const std::vector<int>& channelIndices);
225 void initializeSceneBlock(
const cv::Size& blockSize,
const std::vector<int>& channelIndices,
226 cv::OutputArray output)
const;
234 virtual MetadataBuilder buildMetadataTree()
const;
237 std::list<std::string> m_auxNames;
238 std::vector<LevelInfo> m_levels;
239 mutable std::mutex m_readBlockMutex;
240 std::string m_rawMetadata;
241 MetadataFormat m_metadataFormat = MetadataFormat::None;
242 MetadataBuilder m_channelAttrs;
245 mutable std::once_flag m_metadataOnce;
247 mutable std::once_flag m_channelAttrsOnce;
248 mutable Metadata m_channelAttributesMeta;
252#define CVScenePtr std::shared_ptr<slideio::CVScene>
255#pragma warning( pop )
class CVScene represents a base class for opencv based representations of raster images contained in ...
Definition: cvscene.hpp:38
virtual Compression getCompression() const =0
returns compression of the raster data
virtual MetadataFormat getMetadataFormat() const
returns metadata format of the image
Definition: cvscene.hpp:204
virtual slideio::DataType getChannelDataType(int channel) const =0
returns channel data type.
virtual const std::list< std::string > & getAuxImageNames() const
returns list of auxiliary image names.
Definition: cvscene.hpp:183
virtual double getMagnification() const =0
returns slide magnification extracted from the slide metadata.
virtual std::string getName() const =0
returns scene name
virtual int getNumChannels() const =0
returns number of image channels.
virtual int getNumTFrames() const
returns number of time frames in the image.
Definition: cvscene.hpp:63
virtual cv::Rect getRect() const =0
returns image rectangle.
virtual std::string getRawMetadata() const
returns string of serialized metadata. Content of the string depends on image format.
Definition: cvscene.hpp:195
virtual std::string getFilePath() const =0
returns path of the slide
virtual ~CVScene()=default
default constructor
virtual int getNumAuxImages() const
returns number of auxiliary images in the scene object.
Definition: cvscene.hpp:187
virtual Resolution getResolution() const =0
returns image resolution in x and y direction.
virtual double getZSliceResolution() const
returns thickness of a Z slice in meters for 3D images.
Definition: cvscene.hpp:81
virtual double getTFrameResolution() const
returns time between 2 time frames in seconds for images with time frames.
Definition: cvscene.hpp:83
virtual int getNumZSlices() const
returns number of z-slices in the images.
Definition: cvscene.hpp:58
Definition: exceptions.hpp:15
Compression
raster data compression enum
Definition: slideio_enums.hpp:12