-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathcomparison_svg_opencv.cpp
90 lines (76 loc) · 2.28 KB
/
comparison_svg_opencv.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// this file is part of homog2d
// used to build a figure that is included in manual
// see makefile target doc-fig
#include "fig_src.header"
struct LocalData
{
Circle c1;
Ellipse e1;
Segment seg;
FRect r1;
OPolyline opl;
CPolyline cpl;
Line2d line;
OSegment vec;
template<typename T>
void drawStuff( T& im )
{
cpl.draw( im, DrawParams().setColor(0,150,150) );
opl.draw( im, DrawParams().setColor(150,150,0).setPointStyle(PtStyle::Dot) );
c1.draw( im, DrawParams().setColor(0,0,100) );
e1.draw( im, DrawParams().setColor(200,0,0) );
seg.draw( im, DrawParams().setColor(150,0,150) );
vec.draw( im, DrawParams().setColor(0,250,50) );
r1.draw( im, DrawParams().setColor(150,200,0) );
line.draw( im, DrawParams().setColor(0,250,0) );
drawText( im, "Some Text, default size (20)", Point2d(50,50) );
drawText( im, "color, size=30px", Point2d(160,100), DrawParams().setFontSize(30).setColor(250,120,0) );
DrawParams dp_pts;
auto it1 = c1.intersects( line );
draw( im, it1.get() );
auto it2 = c1.intersects( seg );
draw( im, it2.get() );
}
};
int main()
{
img::DrawParams dp;
// dp.setThickness(1).showPoints().showIndex();
dp.setThickness(1).showPoints();
dp.setDefault();
LocalData data;
data.c1 = Circle( Point2d(280,200), 60 );
data.e1 = Ellipse( Point2d(150,100), 60, 15, 20.*M_PI/180. );
data.seg = getSegment( data.c1, data.e1 );
data.r1 = FRect( 40, 30, 220, 112 );
data.line = Line2d( 22,238,280,178);
data.vec = OSegment(370,240,330,280 );
img::Image<SvgImage> im1( 400,300 );
img::Image<cv::Mat> im2( 400,300 );
std::vector<Point2d> vpts{
{50,10},
{70,140},
{180, 110},
{150, 85},
{120,190}
};
data.opl.set(vpts);
data.cpl.set(vpts);
data.opl.translate( 140, 105 );
data.opl.rotate( Rotate::CCW, Point2d(220,180) );
data.drawStuff( im1 );
data.drawStuff( im2 );
Point2d pt( 40, 280 );
dp.setColor( 250,0,0);
img::PtStyle newPointStyle = img::PtStyle::Plus;
for( int i=0;i<=(int)img::PtStyle::Dot; i++ )
{
// std::cout << i << " color=" << dp.color() << '\n';
pt.draw( im1, dp.setPointStyle( newPointStyle ) );
pt.draw( im2, dp.setPointStyle( newPointStyle ) );
newPointStyle = dp._dpValues.nextPointStyle();
pt.translate(30,0);
}
im1.write( "comparison_1.svg" );
im2.write( "comparison_2.png" );
}