DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
testImageSimple.cpp
Go to the documentation of this file.
1
16
29
31
#include <iostream>
32
#include "DGtal/base/Common.h"
33
#include "DGtal/kernel/domains/HyperRectDomain.h"
34
#include "DGtal/kernel/SpaceND.h"
35
#include "DGtal/helpers/StdDefs.h"
36
#include "DGtal/images/CImage.h"
37
#include "DGtal/images/Image.h"
38
#include "DGtal/images/ImageContainerBySTLVector.h"
40
41
using namespace
std
;
42
using namespace
DGtal
;
43
45
// Functions for testing class ImageSimple.
47
51
bool
testSelfCheckConcept
()
52
{
53
unsigned
int
nbok = 0;
54
unsigned
int
nb = 0;
55
56
trace
.
beginBlock
(
"Testing Boost concept ..."
);
57
typedef
Image<ImageContainerBySTLVector<Z2i::Domain, int>
>
MyImage
;
58
BOOST_CONCEPT_ASSERT((
concepts::CImage< MyImage >
));
59
60
nbok ++;
61
62
63
nb++;
64
trace
.
info
() <<
"("
<< nbok <<
"/"
<< nb <<
") "
65
<<
"true == true"
<< std::endl;
66
trace
.
endBlock
();
67
68
return
nbok == nb;
69
}
70
71
72
bool
testCreate
()
73
{
74
unsigned
int
nbok = 0;
75
unsigned
int
nb = 0;
76
77
trace
.
beginBlock
(
"Testing Image Create ..."
);
78
typedef
ImageContainerBySTLVector<Z2i::Domain, int>
VImage;
79
typedef
Image<VImage >
MyImage
;
80
BOOST_CONCEPT_ASSERT((
concepts::CImage< MyImage >
));
81
82
Z2i::Point
a(0,0);
83
Z2i::Point
b(128,128);
84
Z2i::Domain
domain
(a,b);
85
MyImage
image
(
new
VImage(
domain
) );
86
87
trace
.
info
()<<
image
<<std::endl;
88
trace
.
info
()<<*
image
.
getPointer
()<<std::endl;
89
90
nbok +=
image
.
isValid
() ? 1 : 0;
91
nb++;
92
93
typedef
HyperRectDomain<SpaceND <6>
> Domain6;
94
typedef
ImageContainerBySTLVector<Domain6, int>
VImage6;
95
typedef
Image<VImage6 >
MyImage6;
96
BOOST_CONCEPT_ASSERT((
concepts::CImage< MyImage6 >
));
97
98
Z2i::Integer
aa[] = {0,0,0,0,0,0};
99
Z2i::Integer
bb[] = {2,2,2,2,2,2};
100
Domain6::Point
A
(aa);
101
Domain6::Point
B
(bb);
102
103
MyImage6 imageBis(
new
VImage6( Domain6(
A
,
B
) ) );
104
trace
.
warning
() <<
"Dimension 6 image"
<<std::endl;
105
trace
.
info
()<< imageBis <<std::endl;
106
107
nbok += imageBis.isValid() ? 1 : 0;
108
nb++;
109
110
111
trace
.
info
() <<
"("
<< nbok <<
"/"
<< nb <<
") "
112
<<
"true == true"
<< std::endl;
113
trace
.
endBlock
();
114
115
return
nbok == nb;
116
}
117
118
bool
testAPI
()
119
{
120
unsigned
int
nbok = 0;
121
unsigned
int
nb = 0;
122
123
trace
.
beginBlock
(
"Testing Image API ..."
);
124
typedef
ImageContainerBySTLVector<Z2i::Domain, int>
VImage;
125
typedef
Image<VImage >
MyImage
;
126
BOOST_CONCEPT_ASSERT((
concepts::CImage< MyImage >
));
127
128
Z2i::Point
a(0,0);
129
Z2i::Point
b(32,32);
130
Z2i::Point
c(12, 14);
131
132
Z2i::Domain
domain
(a,b);
133
MyImage
image
(
new
VImage(
domain
) );
134
135
trace
.
info
()<<
image
<<std::endl;
136
137
138
nbok +=
image
.
isValid
() ? 1 : 0;
139
nb++;
140
141
image
.
setValue
(c, 42);
142
trace
.
info
()<<
"Value at "
<<c<<
" = "
<<
image
(c)<<std::endl;
143
144
trace
.
warning
() <<
"Image Iterate"
<<std::endl;
145
trace
.
info
()<<std::endl;
146
MyImage::ConstRange
r =
image
.
constRange
();
147
for
(
MyImage::ConstRange::ConstIterator
it =r.
begin
(), ite=r.
end
();
148
it != ite; ++it)
149
std::cerr << (*it)<<
" "
;
150
151
trace
.
info
()<<std::endl;
152
153
nbok += (
image
(c) == 42) ? 1 : 0;
154
nb++;
155
156
trace
.
info
() <<
"("
<< nbok <<
"/"
<< nb <<
") "
157
<<
"true == true"
<< std::endl;
158
trace
.
endBlock
();
159
160
return
nbok == nb;
161
}
162
163
bool
testImageCopy
()
164
{
165
unsigned
int
nbok = 0;
166
unsigned
int
nb = 0;
167
168
trace
.
beginBlock
(
"Testing copy of Image..."
);
169
typedef
ImageContainerBySTLVector<Z2i::Domain, int>
VImage;
170
typedef
Image<VImage >
MyImage
;
171
BOOST_CONCEPT_ASSERT((
concepts::CImage< MyImage >
));
172
173
Z2i::Point
a(0,0);
174
Z2i::Point
b(32,32);
175
Z2i::Point
c(12, 14);
176
177
Z2i::Domain
domain
(a,b);
178
MyImage
image
(
new
VImage(
domain
) );
179
180
trace
.
info
()<<
image
<<std::endl;
181
182
nbok +=
image
.
isValid
() ? 1 : 0;
183
nb++;
184
185
//Image pointer
186
VImage * imContainer =
187
new
VImage(
domain
);
188
189
//Image through smart pointer
190
//(that takes ownership and must free the memory)
191
MyImage
image2(imContainer);
192
193
const
MyImage::ImagePointer p = image2.getPointer();
194
trace
.
info
() << p << std::endl;
195
trace
.
info
() << *p << std::endl;
196
197
nbok += (image2.isValid()) ? 1 : 0;
198
nb++;
199
200
trace
.
info
() << p.get() << std::endl;
201
trace
.
info
() << imContainer << std::endl;
202
nbok += (p.get() == imContainer) ? 1 : 0;
203
nb++;
204
205
trace
.
info
() <<
"("
<< nbok <<
"/"
<< nb <<
") "
206
<<
"true == true"
<< std::endl;
207
208
trace
.
endBlock
();
209
210
return
nbok == nb;
211
}
212
bool
testImageCopyShort
()
213
{
214
unsigned
int
nbok = 0;
215
unsigned
int
nb = 0;
216
217
trace
.
beginBlock
(
"Testing smart copy of Image..."
);
218
typedef
ImageContainerBySTLVector<Z2i::Domain, int>
VImage;
219
typedef
Image<VImage >
MyImage
;
220
BOOST_CONCEPT_ASSERT((
concepts::CImage< MyImage >
));
221
222
Z2i::Point
a(0,0);
223
Z2i::Point
b(32,32);
224
Z2i::Point
c(12, 14);
225
226
Z2i::Domain
domain
(a,b);
227
228
MyImage
image
(
new
VImage(
domain
) );
229
trace
.
info
() <<
"Image constructed: "
<<
image
<<std::endl;
230
231
VImage myImageC(
domain
);
232
MyImage
imageFromConstRef ( myImageC );
233
trace
.
info
() <<
"Image constructed (from constRef): "
<< imageFromConstRef <<std::endl;
234
nbok += (imageFromConstRef.getPointer().count()== 2) ? 1 : 0;
235
nb++;
236
trace
.
info
() <<
"("
<< nbok <<
"/"
<< nb <<
") "
237
<<
"unique"
<< std::endl;
238
239
MyImage
image3;
240
trace
.
info
() <<
"Image constructed (degulat): "
<< image3 <<std::endl;
241
242
243
trace
.
info
() <<
"default: "
<< image3 <<std::endl;
244
image3 =
image
;
245
nbok += (image3.getPointer().count()== 3) ? 1 : 0;
246
nb++;
247
trace
.
info
() <<
"("
<< nbok <<
"/"
<< nb <<
") "
248
<<
"true == true"
<< std::endl;
249
trace
.
info
() <<
"assignment: "
<< image3 <<std::endl;
250
nbok += (image3.getPointer().count()== 3) ? 1 : 0;
251
nb++;
252
trace
.
info
() <<
"("
<< nbok <<
"/"
<< nb <<
") "
253
<<
"true == true"
<< std::endl;
254
255
image3.
setValue
(
Z2i::Point
(1,1), 4);
256
trace
.
info
() <<
"setValue on assigned: "
<< image3 <<std::endl;
257
nbok += (image3.getPointer().count()== 2) ? 1 : 0;
258
nb++;
259
260
MyImage
image4(image3);
261
trace
.
info
() <<
"Image constructed (copy): "
<< image4 <<std::endl;
262
nbok += (image4.getPointer().count()== 3) ? 1 : 0;
263
nb++;
264
265
266
trace
.
info
() <<
"("
<< nbok <<
"/"
<< nb <<
") "
267
<<
"true == true"
<< std::endl;
268
269
return
nbok == nb;
270
}
271
272
bool
testImageScan
()
273
{
274
unsigned
int
nbok = 0;
275
unsigned
int
nb = 0;
276
277
trace
.
beginBlock
(
"Testing Image scan ..."
);
278
typedef
ImageContainerBySTLVector<Z2i::Domain, int>
VImage;
279
typedef
Image<VImage >
MyImage
;
280
BOOST_CONCEPT_ASSERT((
concepts::CImage< MyImage >
));
281
282
Z2i::Point
a(0,0);
283
Z2i::Point
b(32,32);
284
Z2i::Point
c(12, 14);
285
286
Z2i::Domain
domain
(a,b);
287
MyImage
image
(
new
VImage(
domain
) );
288
289
typedef
MyImage::Range::Iterator
Iterator
;
290
typedef
MyImage::Domain::ConstIterator
DomainConstIterator;
291
292
//Setting values iterating on the domain points
293
for
(
Iterator
it =
image
.
range
().
begin
(), itend =
image
.
range
().
end
();
294
it != itend; ++it)
295
*it = 42 ;
// (*it) is a container cell
296
297
298
//Fast init of the image using container built-in iterator
299
for
(DomainConstIterator it =
image
.
domain
().
begin
(), itend =
image
.
domain
().
end
();
300
it != itend; ++it)
301
image
.
setValue
( *it , 42 );
// (*it) is a Point
302
303
304
return
nbok == nb;
305
}
306
307
309
// Standard services - public :
310
311
int
main
(
int
argc,
char
** argv )
312
{
313
trace
.
beginBlock
(
"Testing class ImageSimple"
);
314
trace
.
info
() <<
"Args:"
;
315
for
(
int
i = 0; i < argc; ++i )
316
trace
.
info
() <<
" "
<< argv[ i ];
317
trace
.
info
() << endl;
318
319
bool
res =
testSelfCheckConcept
()
320
&&
testCreate
()
321
&&
testAPI
()
322
&&
testImageCopy
() &&
testImageScan
()
323
&&
testImageCopyShort
();
// && ... other tests
324
325
trace
.
emphase
() << ( res ?
"Passed."
:
"Error."
) << endl;
326
trace
.
endBlock
();
327
return
res ? 0 : 1;
328
}
329
// //
B
Definition
testPartialTemplateSpecialization.cpp:63
B::B
B(const C &c)
Definition
testPartialTemplateSpecialization.cpp:73
DGtal::HyperRectDomain
Aim: Parallelepidec region of a digital space, model of a 'CDomain'.
Definition
HyperRectDomain.h:100
DGtal::HyperRectDomain::begin
const ConstIterator & begin() const
Definition
HyperRectDomain.h:176
DGtal::HyperRectDomain::end
const ConstIterator & end() const
Definition
HyperRectDomain.h:201
DGtal::HyperRectDomain< Space >::ConstIterator
Iterator ConstIterator
Definition
HyperRectDomain.h:125
DGtal::ImageContainerBySTLVector
Definition
ImageContainerBySTLVector.h:127
DGtal::Image
Aim: implements association between points lying in a digital domain and values.
Definition
Image.h:70
DGtal::Image::domain
const Domain & domain() const
Definition
Image.h:192
DGtal::Image::range
Range range()
Definition
Image.h:214
DGtal::Image::getPointer
const ImagePointer getPointer() const
Definition
Image.h:276
DGtal::Image::constRange
ConstRange constRange() const
Definition
Image.h:203
DGtal::Image::setValue
void setValue(const Point &aPoint, const Value &aValue)
Definition
Image.h:247
DGtal::Image::isValid
bool isValid() const
Definition
Image.h:266
DGtal::Iterator
DGtal::IteratorCompletion< MyImage< T, N > >::ConstRange
SimpleRandomAccessConstRangeFromPoint< ConstIterator, DistanceFunctor > ConstRange
Definition
IteratorCompletion.h:127
DGtal::SimpleRandomAccessConstRangeFromPoint::begin
ConstIterator begin() const
Definition
SimpleRandomAccessConstRangeFromPoint.h:192
DGtal::SimpleRandomAccessConstRangeFromPoint::end
ConstIterator end() const
Definition
SimpleRandomAccessConstRangeFromPoint.h:212
DGtal::SimpleRandomAccessConstRangeFromPoint< ConstIterator, DistanceFunctor >::ConstIterator
ConstIterator ConstIterator
Definition
SimpleRandomAccessConstRangeFromPoint.h:87
DGtal::SimpleRandomAccessRangeFromPoint::begin
Iterator begin()
Definition
SimpleRandomAccessRangeFromPoint.h:204
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::Iterator
Iterator Iterator
Definition
SimpleRandomAccessRangeFromPoint.h:87
DGtal::SimpleRandomAccessRangeFromPoint::end
Iterator end()
Definition
SimpleRandomAccessRangeFromPoint.h:244
DGtal::Trace::beginBlock
void beginBlock(const std::string &keyword="")
DGtal::Trace::warning
std::ostream & warning()
DGtal::Trace::emphase
std::ostream & emphase()
DGtal::Trace::info
std::ostream & info()
DGtal::Trace::endBlock
double endBlock()
MyImage
[includes]
Definition
exampleIteratorCompletion.cpp:50
MyImage::setValue
void setValue(Point const &aPoint, Value const &aValue)
Definition
exampleIteratorCompletion.cpp:92
DGtal::Z2i::Integer
DGtal::int32_t Integer
Definition
StdDefs.h:74
DGtal::Z2i::Point
Space::Point Point
Definition
StdDefs.h:95
DGtal::Z2i::Domain
HyperRectDomain< Space > Domain
Definition
StdDefs.h:99
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::trace
Trace trace
std
STL namespace.
A
Definition
testCountedConstPtrOrConstPtr.cpp:43
A::A
A(int _a)
Definition
testCountedConstPtrOrConstPtr.cpp:44
DGtal::concepts::CImage
Aim: Defines the concept describing a read/write image, having an output iterator.
Definition
CImage.h:103
testCreate
bool testCreate()
Definition
testImageSimple.cpp:72
testSelfCheckConcept
bool testSelfCheckConcept()
Definition
testImageSimple.cpp:51
testAPI
bool testAPI()
Definition
testImageSimple.cpp:118
testImageScan
bool testImageScan()
Definition
testImageSimple.cpp:272
testImageCopy
bool testImageCopy()
Definition
testImageSimple.cpp:163
testImageCopyShort
bool testImageCopyShort()
Definition
testImageSimple.cpp:212
main
int main(int, char **)
Definition
testIntegerComputer.cpp:331
domain
Domain domain
Definition
testProjection.cpp:88
image
Image image(domain)
tests
images
testImageSimple.cpp
Generated on
for DGtal by
1.18.0