22 #ifndef _svlSampleImageCustom_h
23 #define _svlSampleImageCustom_h
36 template <
class _ValueType,
unsigned int _DataChannels,
unsigned int _V
ideoChannels>
51 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
53 Image[vch].
SetRef(*(OwnImage[vch]));
54 #if CISST_SVL_HAS_OPENCV
55 int ocvdepth = GetOCVDepth();
56 if (ocvdepth >= 0) OCVImageHeader[vch] = cvCreateImageHeader(cvSize(0, 0), ocvdepth, _DataChannels);
57 else OCVImageHeader[vch] = 0;
58 #endif // CISST_SVL_HAS_OPENCV
66 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
69 Image[vch].
SetRef(*(OwnImage[vch]));
74 #if CISST_SVL_HAS_OPENCV
75 int ocvdepth = GetOCVDepth();
76 if (ocvdepth >= 0) OCVImageHeader[vch] = cvCreateImageHeader(cvSize(0, 0), ocvdepth, _DataChannels);
77 else OCVImageHeader[vch] = 0;
78 #endif // CISST_SVL_HAS_OPENCV
86 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
88 Image[vch].
SetRef(*(OwnImage[vch]));
89 #if CISST_SVL_HAS_OPENCV
90 int ocvdepth = GetOCVDepth();
91 if (ocvdepth >= 0) OCVImageHeader[vch] = cvCreateImageHeader(cvSize(0, 0), ocvdepth, _DataChannels);
92 else OCVImageHeader[vch] = 0;
93 #endif // CISST_SVL_HAS_OPENCV
105 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
106 if (OwnImage[vch])
delete OwnImage[vch];
107 #if CISST_SVL_HAS_OPENCV
108 if (OCVImageHeader[vch]) cvReleaseImageHeader(&(OCVImageHeader[vch]));
109 #endif // CISST_SVL_HAS_OPENCV
135 if (IsTypeUInt8<_ValueType>(static_cast<_ValueType>(0))) {
136 if (_DataChannels == 1) {
140 if (_DataChannels == 3) {
144 if (_DataChannels == 4) {
149 if (IsTypeUInt16<_ValueType>(static_cast<_ValueType>(0))) {
150 if (_DataChannels == 1) {
155 if (IsTypeUInt32<_ValueType>(static_cast<_ValueType>(0))) {
156 if (_DataChannels == 1) {
161 if (IsTypeFloat<_ValueType>(static_cast<_ValueType>(0))) {
172 for (
unsigned int vch = 0; vch < _VideoChannels && vch < samplevideochannels; vch ++) {
192 for (
unsigned int vch = 0; vch < _VideoChannels && vch < samplevideochannels; vch ++) {
213 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
226 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
236 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
237 if (Image[vch].width() < _DataChannels ||
238 Image[vch].height() < 1)
return false;
245 return reinterpret_cast<unsigned char*
>(
GetPointer());
250 return reinterpret_cast<const unsigned char*
>(
GetPointer());
270 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
276 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
305 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
319 #if CISST_SVL_HAS_OPENCV
321 #else // CISST_SVL_HAS_OPENCV
323 #endif // CISST_SVL_HAS_OPENCV
325 #if CISST_SVL_HAS_OPENCV
326 if (videochannel < _VideoChannels)
return OCVImageHeader[videochannel];
328 #else // CISST_SVL_HAS_OPENCV
329 CMN_LOG_CLASS_INIT_ERROR <<
"Class svlSampleImageCustom: IplImageRef() called while OpenCV is disabled" << std::endl;
331 #endif // CISST_SVL_HAS_OPENCV
334 #if CISST_SVL_HAS_OPENCV
336 #else // CISST_SVL_HAS_OPENCV
338 #endif // CISST_SVL_HAS_OPENCV
340 #if CISST_SVL_HAS_OPENCV
341 if (videochannel < _VideoChannels)
return cv::Mat(OCVImageHeader[videochannel]);
343 #else // CISST_SVL_HAS_OPENCV
346 #endif // CISST_SVL_HAS_OPENCV
351 return reinterpret_cast<unsigned char*
>(
GetPointer(videochannel));
356 return reinterpret_cast<const unsigned char*
>(
GetPointer(videochannel));
359 unsigned char*
GetUCharPointer(
const unsigned int videochannel,
const unsigned int x,
const unsigned int y)
361 return reinterpret_cast<unsigned char*
>(
GetPointer(videochannel, x, y));
364 const unsigned char*
GetUCharPointer(
const unsigned int videochannel,
const unsigned int x,
const unsigned int y)
const
366 return reinterpret_cast<const unsigned char*
>(
GetPointer(videochannel, x, y));
369 void SetSize(
const unsigned int width,
const unsigned int height)
371 for (
unsigned int vch = 0; vch < _VideoChannels; vch ++) {
376 void SetSize(
const unsigned int videochannel,
const unsigned int width,
const unsigned int height)
378 if (OwnData && videochannel < _VideoChannels) {
379 if (
GetWidth (videochannel) == width &&
380 GetHeight(videochannel) == height)
return;
381 OwnImage[videochannel]->
SetSize(height, width * _DataChannels);
382 Image[videochannel].
SetRef(*(OwnImage[videochannel]));
383 #if CISST_SVL_HAS_OPENCV
384 if (OCVImageHeader[videochannel]) {
385 cvInitImageHeader(OCVImageHeader[videochannel],
386 cvSize(width, height),
389 cvSetData(OCVImageHeader[videochannel],
393 #endif // CISST_SVL_HAS_OPENCV
397 #if CISST_SVL_HAS_OPENCV
398 int SetSize(
const IplImage* ipl_image,
const unsigned int videochannel = 0)
399 #else // CISST_SVL_HAS_OPENCV
401 #endif // CISST_SVL_HAS_OPENCV
403 #if CISST_SVL_HAS_OPENCV
404 if (ipl_image && videochannel < _VideoChannels) {
405 SetSize(videochannel, ipl_image->width, ipl_image->height);
408 #endif // CISST_SVL_HAS_OPENCV
412 #if CISST_SVL_HAS_OPENCV
413 int SetSize(
const cv::Mat& cv_mat,
const unsigned int videochannel = 0)
414 #else // CISST_SVL_HAS_OPENCV
416 #endif // CISST_SVL_HAS_OPENCV
418 #if CISST_SVL_HAS_OPENCV
419 if (videochannel < _VideoChannels) {
420 SetSize(videochannel, cv_mat.cols, cv_mat.rows);
423 #endif // CISST_SVL_HAS_OPENCV
427 #if CISST_SVL_HAS_OPENCV
428 int CopyOf(
const IplImage* ipl_image,
const unsigned int videochannel = 0)
429 #else // CISST_SVL_HAS_OPENCV
431 #endif // CISST_SVL_HAS_OPENCV
433 #if CISST_SVL_HAS_OPENCV
434 if (GetOCVImagePixelType(ipl_image) ==
GetPixelType()) {
439 #endif // CISST_SVL_HAS_OPENCV
443 #if CISST_SVL_HAS_OPENCV
444 int CopyOf(
const cv::Mat& cv_mat,
const unsigned int videochannel = 0)
445 #else // CISST_SVL_HAS_OPENCV
447 #endif // CISST_SVL_HAS_OPENCV
449 #if CISST_SVL_HAS_OPENCV
455 #endif // CISST_SVL_HAS_OPENCV
461 return _VideoChannels;
466 return _DataChannels;
471 return (
sizeof(_ValueType) * _DataChannels);
474 unsigned int GetWidth(
const unsigned int videochannel = 0)
const
476 if (videochannel < _VideoChannels)
return static_cast<unsigned int>(Image[videochannel].
width() / _DataChannels);
480 unsigned int GetHeight(
const unsigned int videochannel = 0)
const
482 if (videochannel < _VideoChannels)
return static_cast<unsigned int>(Image[videochannel].
height());
488 if (videochannel < _VideoChannels)
return static_cast<unsigned int>(Image[videochannel].
width());
494 if (videochannel < _VideoChannels) {
502 if (videochannel < _VideoChannels) {
504 const unsigned int width =
GetWidth(videochannel);
522 if (videochannel < _VideoChannels) {
524 unsigned int height =
GetHeight(videochannel);
525 unsigned int from, to;
539 template <
class __ownerType>
542 if (!OwnData && videochannel < _VideoChannels) {
543 Image[videochannel].
SetRef(matrix);
544 #if CISST_SVL_HAS_OPENCV
545 if (OCVImageHeader[videochannel]) {
546 cvInitImageHeader(OCVImageHeader[videochannel],
550 cvSetData(OCVImageHeader[videochannel],
552 GetWidth(videochannel) * _DataChannels);
554 #endif // CISST_SVL_HAS_OPENCV
562 if (!OwnData && videochannel < _VideoChannels) {
563 #if CISST_SVL_HAS_OPENCV
567 Image[videochannel].
SetRef(matrix.rows, matrix.cols, matrix.cols * _DataChannels, _DataChannels, matrix.data);
568 if (OCVImageHeader[videochannel]) {
569 cvInitImageHeader(OCVImageHeader[videochannel],
573 cvSetData(OCVImageHeader[videochannel],
575 GetWidth(videochannel) * _DataChannels);
578 #else // CISST_SVL_HAS_OPENCV
580 #endif // CISST_SVL_HAS_OPENCV
587 if (videochannel < _VideoChannels)
return Image[videochannel];
588 else return InvalidMatrix;
593 if (videochannel < _VideoChannels)
return Image[videochannel];
594 else return InvalidMatrix;
599 if (videochannel < _VideoChannels)
return Image[videochannel].
Pointer();
603 const _ValueType*
GetPointer(
const unsigned int videochannel = 0)
const
605 if (videochannel < _VideoChannels)
return Image[videochannel].
Pointer();
609 _ValueType*
GetPointer(
const unsigned int videochannel,
const unsigned int x,
const unsigned int y)
611 if (videochannel < _VideoChannels) {
612 return Image[videochannel].
Pointer(y, x * _DataChannels);
617 const _ValueType*
GetPointer(
const unsigned int videochannel,
const unsigned int x,
const unsigned int y)
const
619 if (videochannel < _VideoChannels) {
620 return Image[videochannel].
Pointer(y, x * _DataChannels);
631 #if CISST_SVL_HAS_OPENCV
632 IplImage* OCVImageHeader[_VideoChannels];
636 if (IsTypeUInt8 <_ValueType>(static_cast<_ValueType>(0)))
return IPL_DEPTH_8U;
637 if (IsTypeUInt16<_ValueType>(static_cast<_ValueType>(0)))
return IPL_DEPTH_16U;
638 if (IsTypeFloat <_ValueType>(static_cast<_ValueType>(0)))
return IPL_DEPTH_32F;
646 if (ipl_image->depth == IPL_DEPTH_8U) {
651 else if (ipl_image->depth == IPL_DEPTH_16U) {
654 else if (ipl_image->depth == IPL_DEPTH_32F) {
664 if (cv_mat.depth() == CV_8U) {
669 else if (cv_mat.depth() == CV_16U) {
673 else if (cv_mat.depth() == CV_32F) {
680 #endif // CISST_SVL_HAS_OPENCV
683 #endif // _svlSampleImageCustom_h
Definition: svlDefinitions.h:291
int SetSize(const svlSample &sample)
Definition: svlSampleImageCustom.h:187
_ValueType * GetPointer(const unsigned int videochannel=0)
Definition: svlSampleImageCustom.h:597
Definition: svlSampleMatrix.h:34
void SetSize(const unsigned int videochannel, const unsigned int width, const unsigned int height)
Definition: svlSampleImageCustom.h:376
unsigned int GetDataChannels() const
Definition: svlSampleImageCustom.h:464
int SetSize(const cv::Mat &CMN_UNUSED(cv_mat), const unsigned int CMN_UNUSED(videochannel)=0)
Definition: svlSampleImageCustom.h:415
vctDynamicMatrixRef< _ValueType > GetMatrixRef(const unsigned int videochannel=0)
Definition: svlSampleImageCustom.h:585
virtual unsigned int GetHeight(const unsigned int videochannel=0) const =0
Definition: svlDefinitions.h:207
unsigned int GetWidth(const unsigned int videochannel=0) const
Definition: svlSampleImageCustom.h:474
Definition: vctDynamicMatrixBase.h:42
svlStreamType
Definition: svlDefinitions.h:193
unsigned char * GetUCharPointer(const unsigned int videochannel)
Definition: svlSampleImageCustom.h:349
virtual void SerializeRaw(std::ostream &outputStream) const
Definition: svlSampleImageCustom.h:258
size_type width() const
Definition: vctDynamicConstMatrixBase.h:253
int SetMatrix(vctDynamicMatrixBase< __ownerType, _ValueType > &matrix, unsigned int videochannel=0)
Definition: svlSampleImageCustom.h:540
int CopyOf(const svlSample &sample)
Definition: svlSampleImageCustom.h:221
Definition: svlDefinitions.h:295
svlStreamType GetType() const
Definition: svlSampleImageCustom.h:133
#define CMN_UNUSED(argument)
Definition: cmnPortability.h:479
unsigned int GetHeight(const unsigned int videochannel=0) const
Definition: svlSampleImageCustom.h:480
void SetSize(const unsigned int width, const unsigned int height)
Definition: svlSampleImageCustom.h:369
virtual void SerializeRaw(std::ostream &outputStream) const
virtual void DeSerializeRaw(std::istream &inputStream)
virtual svlStreamType GetType() const =0
int SetMatrix(cv::Mat &matrix, unsigned int videochannel=0)
Definition: svlSampleImageCustom.h:560
#define _GetParallelSubRange(_info, _count, _from, _to)
Definition: svlDefinitions.h:47
virtual svlPixelType GetPixelType() const
unsigned char * GetUCharPointer()
Definition: svlSampleImageCustom.h:243
svlSampleImage * GetSubImage(const unsigned int top, const unsigned int height, const unsigned int videochannel=0)
Definition: svlSampleImageCustom.h:500
svlSampleImageCustom(const svlSampleImageCustom< _ValueType, _DataChannels, _VideoChannels > &other)
Definition: svlSampleImageCustom.h:82
int CopyOf(const IplImage *CMN_UNUSED(ipl_image), const unsigned int CMN_UNUSED(videochannel)=0)
Definition: svlSampleImageCustom.h:430
unsigned char * GetUCharPointer(const unsigned int videochannel, const unsigned int x, const unsigned int y)
Definition: svlSampleImageCustom.h:359
unsigned int GetDataSize(const unsigned int videochannel) const
Definition: svlSampleImageCustom.h:492
const unsigned char * GetUCharPointer(const unsigned int videochannel) const
Definition: svlSampleImageCustom.h:354
virtual unsigned char * GetUCharPointer()=0
void IplImage
Definition: svlTypes.h:70
Definition: svlDefinitions.h:195
Definition: svlDefinitions.h:202
Definition: svlSampleImageCustom.h:37
Definition: svlDefinitions.h:198
svlSampleImageCustom()
Definition: svlSampleImageCustom.h:47
void SetRef(size_type rows, size_type cols, stride_type rowStride, stride_type colStride, pointer dataPointer)
Definition: vctDynamicMatrixRef.h:217
const _ValueType * GetPointer(const unsigned int videochannel=0) const
Definition: svlSampleImageCustom.h:603
const unsigned char * GetUCharPointer() const
Definition: svlSampleImageCustom.h:248
Definition: svlDefinitions.h:208
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition: vctDynamicMatrixBase.h:143
Dynamic matrix referencing existing memory (const)
Definition: vctDynamicConstMatrixRef.h:79
virtual unsigned int GetRows() const =0
unsigned int GetVideoChannels() const
Definition: svlSampleImageCustom.h:459
virtual unsigned int GetVideoChannels() const =0
unsigned int GetBPP() const
Definition: svlSampleImageCustom.h:469
void cmnDeSerializeRaw(std::istream &inputStream, _elementType &data)
Definition: cmnDeSerializer.h:82
const unsigned char * GetUCharPointer(const unsigned int videochannel, const unsigned int x, const unsigned int y) const
Definition: svlSampleImageCustom.h:364
unsigned int GetRowStride(const unsigned int videochannel=0) const
Definition: svlSampleImageCustom.h:486
svlSampleImage * GetSubImage(svlProcInfo *procInfo, const unsigned int videochannel=0)
Definition: svlSampleImageCustom.h:520
void cmnSerializeRaw(std::ostream &outputStream, const _elementType &data)
Definition: cmnSerializer.h:78
Definition: svlDefinitions.h:293
Definition: svlSampleImage.h:35
Declaration of vctDynamicMatrixRef.
virtual void DeSerializeRaw(std::istream &inputStream)
Definition: svlSampleImageCustom.h:286
Macros to export the symbols of cisstStereoVision (in a Dll).
void SetSize(size_type rows, size_type cols, bool storageOrder)
Definition: vctDynamicMatrix.h:364
Definition: svlDefinitions.h:201
void GetEncoder(std::string &codec, int ¶meter) const
Definition: svlDefinitions.h:199
_ValueType * GetPointer(const unsigned int videochannel, const unsigned int x, const unsigned int y)
Definition: svlSampleImageCustom.h:609
int CopyOf(const svlSample *sample)
Definition: svlSampleImageCustom.h:207
#define CMN_LOG_CLASS_RUN_ERROR
Definition: cmnLogger.h:117
std::string Mat
Definition: svlTypes.h:72
Definition: svlProcInfo.h:33
cv::Mat CvMatRef(const unsigned int CMN_UNUSED(videochannel)=0) const
Definition: svlSampleImageCustom.h:337
#define CMN_LOG_CLASS_INIT_ERROR
Definition: cmnLogger.h:113
svlSampleImageCustom(bool owndata)
Definition: svlSampleImageCustom.h:62
#define SVL_FAIL
Definition: svlDefinitions.h:124
bool IsInitialized() const
Definition: svlSampleImageCustom.h:234
~svlSampleImageCustom()
Definition: svlSampleImageCustom.h:103
IplImage * IplImageRef(const unsigned int CMN_UNUSED(videochannel)=0) const
Definition: svlSampleImageCustom.h:322
Definition: svlDefinitions.h:294
int CopyOf(const cv::Mat &CMN_UNUSED(cv_mat), const unsigned int CMN_UNUSED(videochannel)=0)
Definition: svlSampleImageCustom.h:446
Definition: svlDefinitions.h:288
void SetTimestamp(double ts)
int SetSize(const IplImage *CMN_UNUSED(ipl_image), const unsigned int CMN_UNUSED(videochannel)=0)
Definition: svlSampleImageCustom.h:400
const int CMN_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:331
Definition: svlDefinitions.h:204
Definition: svlDefinitions.h:289
Definition: svlDefinitions.h:206
int SetSize(const svlSample *sample)
Definition: svlSampleImageCustom.h:167
svlSampleImageCustom & operator=(const svlSampleImageCustom< _ValueType, _DataChannels, _VideoChannels > &other)
Definition: svlSampleImageCustom.h:117
svlSample * GetNewInstance() const
Definition: svlSampleImageCustom.h:128
Definition: svlDefinitions.h:203
Definition: svlDefinitions.h:292
unsigned int GetDataSize() const
Definition: svlSampleImageCustom.h:253
Definition: svlDefinitions.h:200
vctDynamicConstMatrixRef< _ValueType > GetMatrixRef(const unsigned int videochannel=0) const
Definition: svlSampleImageCustom.h:591
static int Read(svlSampleImage &image, const unsigned int videoch, const std::string &filename, bool noresize=false)
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76
svlPixelType
Definition: svlDefinitions.h:286
#define SVL_OK
Definition: svlDefinitions.h:123
Definition: svlDefinitions.h:205
virtual unsigned int GetWidth(const unsigned int videochannel=0) const =0
static int Write(const svlSampleImage &image, const unsigned int videoch, const std::string &filename, const int compression=-1)
Definition: svlSample.h:31
double GetTimestamp() const
size_type height() const
Definition: vctDynamicConstMatrixBase.h:248
const _ValueType * GetPointer(const unsigned int videochannel, const unsigned int x, const unsigned int y) const
Definition: svlSampleImageCustom.h:617
virtual unsigned int GetCols() const =0