1
1
Adding borders to your images {#tutorial_copyMakeBorder}
2
2
=============================
3
3
4
+ @prev_tutorial{tutorial_filter_2d}
5
+ @next_tutorial{tutorial_sobel_derivatives}
6
+
4
7
Goal
5
8
----
6
9
7
10
In this tutorial you will learn how to:
8
11
9
- - Use the OpenCV function @ ref cv:: copyMakeBorder to set the borders (extra padding to your
12
+ - Use the OpenCV function ** copyMakeBorder() ** to set the borders (extra padding to your
10
13
image).
11
14
12
15
Theory
@@ -30,10 +33,7 @@ Theory
30
33
31
34
This will be seen more clearly in the Code section.
32
35
33
- Code
34
- ----
35
-
36
- -# ** What does this program do?**
36
+ - ** What does this program do?**
37
37
- Load an image
38
38
- Let the user choose what kind of padding use in the input image. There are two options:
39
39
@@ -45,38 +45,153 @@ Code
45
45
The user chooses either option by pressing 'c' (constant) or 'r' (replicate)
46
46
- The program finishes when the user presses 'ESC'
47
47
48
- -# The tutorial code's is shown lines below. You can also download it from
49
- [ here] ( https://github.com/opencv/opencv/tree/master/samples/cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp )
50
- @include samples/cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp
48
+ Code
49
+ ----
50
+
51
+ The tutorial code's is shown lines below.
52
+
53
+ @add_toggle_cpp
54
+ You can also download it from
55
+ [ here] ( https://raw.githubusercontent.com/opencv/opencv/master/samples/cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp )
56
+ @include samples/cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp
57
+ @end_toggle
58
+
59
+ @add_toggle_java
60
+ You can also download it from
61
+ [ here] ( https://raw.githubusercontent.com/opencv/opencv/master/samples/java/tutorial_code/ImgTrans/MakeBorder/CopyMakeBorder.java )
62
+ @include samples/java/tutorial_code/ImgTrans/MakeBorder/CopyMakeBorder.java
63
+ @end_toggle
64
+
65
+ @add_toggle_python
66
+ You can also download it from
67
+ [ here] ( https://raw.githubusercontent.com/opencv/opencv/master/samples/python/tutorial_code/ImgTrans/MakeBorder/copy_make_border.py )
68
+ @include samples/python/tutorial_code/ImgTrans/MakeBorder/copy_make_border.py
69
+ @end_toggle
51
70
52
71
Explanation
53
72
-----------
54
73
55
- -# First we declare the variables we are going to use:
56
- @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp variables
74
+ #### Declare the variables
75
+
76
+ First we declare the variables we are going to use:
77
+
78
+ @add_toggle_cpp
79
+ @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp variables
80
+ @end_toggle
81
+
82
+ @add_toggle_java
83
+ @snippet java/tutorial_code/ImgTrans/MakeBorder/CopyMakeBorder.java variables
84
+ @end_toggle
85
+
86
+ @add_toggle_python
87
+ @snippet python/tutorial_code/ImgTrans/MakeBorder/copy_make_border.py variables
88
+ @end_toggle
89
+
90
+ Especial attention deserves the variable * rng* which is a random number generator. We use it to
91
+ generate the random border color, as we will see soon.
92
+
93
+ #### Load an image
94
+
95
+ As usual we load our source image * src* :
96
+
97
+ @add_toggle_cpp
98
+ @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp load
99
+ @end_toggle
100
+
101
+ @add_toggle_java
102
+ @snippet java/tutorial_code/ImgTrans/MakeBorder/CopyMakeBorder.java load
103
+ @end_toggle
104
+
105
+ @add_toggle_python
106
+ @snippet python/tutorial_code/ImgTrans/MakeBorder/copy_make_border.py load
107
+ @end_toggle
108
+
109
+ #### Create a window
110
+
111
+ After giving a short intro of how to use the program, we create a window:
112
+
113
+ @add_toggle_cpp
114
+ @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp create_window
115
+ @end_toggle
116
+
117
+ @add_toggle_java
118
+ @snippet java/tutorial_code/ImgTrans/MakeBorder/CopyMakeBorder.java create_window
119
+ @end_toggle
57
120
58
- Especial attention deserves the variable *rng* which is a random number generator. We use it to
59
- generate the random border color, as we will see soon.
121
+ @add_toggle_python
122
+ @snippet python/tutorial_code/ImgTrans/MakeBorder/copy_make_border.py create_window
123
+ @end_toggle
60
124
61
- -# As usual we load our source image * src* :
62
- @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp load
125
+ #### Initialize arguments
63
126
64
- -# After giving a short intro of how to use the program, we create a window:
65
- @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp create_window
66
- -# Now we initialize the argument that defines the size of the borders (* top* , * bottom* , * left* and
67
- * right* ). We give them a value of 5% the size of * src* .
68
- @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp init_arguments
69
- -# The program runs in a ** for** loop. If the user presses 'c' or 'r', the * borderType* variable
70
- takes the value of * BORDER_CONSTANT* or * BORDER_REPLICATE* respectively:
71
- @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp check_keypress
72
- -# In each iteration (after 0.5 seconds), the variable * value* is updated...
73
- @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp update_value
74
- with a random value generated by the ** RNG** variable * rng* . This value is a number picked
75
- randomly in the range \f$[ 0,255] \f$
127
+ Now we initialize the argument that defines the size of the borders (* top* , * bottom* , * left* and
128
+ * right* ). We give them a value of 5% the size of * src* .
76
129
77
- -# Finally, we call the function @ref cv::copyMakeBorder to apply the respective padding:
78
- @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp copymakeborder
79
- The arguments are:
130
+ @add_toggle_cpp
131
+ @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp init_arguments
132
+ @end_toggle
133
+
134
+ @add_toggle_java
135
+ @snippet java/tutorial_code/ImgTrans/MakeBorder/CopyMakeBorder.java init_arguments
136
+ @end_toggle
137
+
138
+ @add_toggle_python
139
+ @snippet python/tutorial_code/ImgTrans/MakeBorder/copy_make_border.py init_arguments
140
+ @end_toggle
141
+
142
+ #### Loop
143
+
144
+ The program runs in an infinite loop while the key ** ESC** isn't pressed.
145
+ If the user presses '** c** ' or '** r** ', the * borderType* variable
146
+ takes the value of * BORDER_CONSTANT* or * BORDER_REPLICATE* respectively:
147
+
148
+ @add_toggle_cpp
149
+ @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp check_keypress
150
+ @end_toggle
151
+
152
+ @add_toggle_java
153
+ @snippet java/tutorial_code/ImgTrans/MakeBorder/CopyMakeBorder.java check_keypress
154
+ @end_toggle
155
+
156
+ @add_toggle_python
157
+ @snippet python/tutorial_code/ImgTrans/MakeBorder/copy_make_border.py check_keypress
158
+ @end_toggle
159
+
160
+ #### Random color
161
+
162
+ In each iteration (after 0.5 seconds), the random border color (* value* ) is updated...
163
+
164
+ @add_toggle_cpp
165
+ @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp update_value
166
+ @end_toggle
167
+
168
+ @add_toggle_java
169
+ @snippet java/tutorial_code/ImgTrans/MakeBorder/CopyMakeBorder.java update_value
170
+ @end_toggle
171
+
172
+ @add_toggle_python
173
+ @snippet python/tutorial_code/ImgTrans/MakeBorder/copy_make_border.py update_value
174
+ @end_toggle
175
+
176
+ This value is a set of three numbers picked randomly in the range \f$[ 0,255] \f$.
177
+
178
+ #### Form a border around the image
179
+
180
+ Finally, we call the function ** copyMakeBorder()** to apply the respective padding:
181
+
182
+ @add_toggle_cpp
183
+ @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp copymakeborder
184
+ @end_toggle
185
+
186
+ @add_toggle_java
187
+ @snippet java/tutorial_code/ImgTrans/MakeBorder/CopyMakeBorder.java copymakeborder
188
+ @end_toggle
189
+
190
+ @add_toggle_python
191
+ @snippet python/tutorial_code/ImgTrans/MakeBorder/copy_make_border.py copymakeborder
192
+ @end_toggle
193
+
194
+ - The arguments are:
80
195
81
196
-# * src* : Source image
82
197
-# * dst* : Destination image
@@ -87,8 +202,21 @@ Explanation
87
202
-# * value* : If * borderType* is * BORDER_CONSTANT* , this is the value used to fill the border
88
203
pixels.
89
204
90
- -# We display our output image in the image created previously
91
- @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp display
205
+ #### Display the results
206
+
207
+ We display our output image in the image created previously
208
+
209
+ @add_toggle_cpp
210
+ @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp display
211
+ @end_toggle
212
+
213
+ @add_toggle_java
214
+ @snippet java/tutorial_code/ImgTrans/MakeBorder/CopyMakeBorder.java display
215
+ @end_toggle
216
+
217
+ @add_toggle_python
218
+ @snippet python/tutorial_code/ImgTrans/MakeBorder/copy_make_border.py display
219
+ @end_toggle
92
220
93
221
Results
94
222
-------
0 commit comments