11Adding borders to your images {#tutorial_copyMakeBorder}
22=============================
33
4+ @prev_tutorial{tutorial_filter_2d}
5+ @next_tutorial{tutorial_sobel_derivatives}
6+
47Goal
58----
69
710In this tutorial you will learn how to:
811
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
1013 image).
1114
1215Theory
@@ -30,10 +33,7 @@ Theory
3033
3134 This will be seen more clearly in the Code section.
3235
33- Code
34- ----
35-
36- -# ** What does this program do?**
36+ - ** What does this program do?**
3737 - Load an image
3838 - Let the user choose what kind of padding use in the input image. There are two options:
3939
@@ -45,38 +45,153 @@ Code
4545 The user chooses either option by pressing 'c' (constant) or 'r' (replicate)
4646 - The program finishes when the user presses 'ESC'
4747
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
5170
5271Explanation
5372-----------
5473
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
57120
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
60124
61- -# As usual we load our source image * src* :
62- @snippet cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp load
125+ #### Initialize arguments
63126
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* .
76129
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:
80195
81196 -# * src* : Source image
82197 -# * dst* : Destination image
@@ -87,8 +202,21 @@ Explanation
87202 -# * value* : If * borderType* is * BORDER_CONSTANT* , this is the value used to fill the border
88203 pixels.
89204
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
92220
93221Results
94222-------
0 commit comments