Обычно вы дополняете изображение сначала с помощью np.pad()
(документы) или cv2.copyMakeBorder()
(документы) и смещаете индексы, которые хотите выбрать, в зависимости от размера вашегообивка.Хорошая вещь в обеих этих функциях заключается в том, что они предоставляют множество различных опций, с которыми добавляются изображения.У Numpy гораздо больше опций, но большинство стандартных, которые вы хотели бы использовать (повторение краевых пикселей, зеркальное отображение краевых пикселей, обтекание краевых пикселей или постоянное заполнение), доступны в обеих библиотеках.
Типы NumPy границ прямо перечислены в документах, но я скопирую их здесь:
mode : str or function
One of the following string values or a user supplied function.
‘constant’
Pads with a constant value.
‘edge’
Pads with the edge values of array.
‘linear_ramp’
Pads with the linear ramp between end_value and the array edge value.
‘maximum’
Pads with the maximum value of all or part of the vector along each axis.
‘mean’
Pads with the mean value of all or part of the vector along each axis.
‘median’
Pads with the median value of all or part of the vector along each axis.
‘minimum’
Pads with the minimum value of all or part of the vector along each axis.
‘reflect’
Pads with the reflection of the vector mirrored on the first and last values of the vector along each axis.
‘symmetric’
Pads with the reflection of the vector mirrored along the edge of the array.
‘wrap’
Pads with the wrap of the vector along the axis. The first values are used to pad the end and the end values are used to pad the beginning.
<function>
Padding function, see Notes.
В нем есть примечания для произвольных переданных функций, что является отличной возможностью.
Типы границ OpenCV не указываются непосредственно в документах copyMakeBorder()
, но вы можете найти их, выполнив поиск типов границ в документах .Опять же, просто чтобы они были на SO:
BORDER_CONSTANT
Python: cv.BORDER_CONSTANT
iiiiii|abcdefgh|iiiiiii with some specified i
BORDER_REPLICATE
Python: cv.BORDER_REPLICATE
aaaaaa|abcdefgh|hhhhhhh
BORDER_REFLECT
Python: cv.BORDER_REFLECT
fedcba|abcdefgh|hgfedcb
BORDER_WRAP
Python: cv.BORDER_WRAP
cdefgh|abcdefgh|abcdefg
BORDER_REFLECT_101
Python: cv.BORDER_REFLECT_101
gfedcb|abcdefgh|gfedcba
BORDER_TRANSPARENT
Python: cv.BORDER_TRANSPARENT
uvwxyz|abcdefgh|ijklmno
BORDER_REFLECT101
Python: cv.BORDER_REFLECT101
same as BORDER_REFLECT_101
BORDER_DEFAULT
Python: cv.BORDER_DEFAULT
same as BORDER_REFLECT_101
BORDER_ISOLATED
Python: cv.BORDER_ISOLATED
do not look outside of ROI