Для выполнения предварительной обработки изображений я пытался использовать класс ImageDataGenerator от Keras. Вот как это использовалось:
data_generator = keras.preprocessing.image.ImageDataGenerator(
rotation_range = 60,
width_shift_range = 0.1,
height_shift_range = 0.1,
brightness_range = [0.5, 1.5],
shear_range = 0.01,
zoom_range = [0, 1],
horizontal_flip = True,
vertical_flip = True,
preprocessing_function = preprocess_other
)
Атрибуту preprocessing_function
была назначена функция с именем preprocess_other
, как определено ниже:
def preprocess_other(image):
flip = np.random.random()
if flip > 0.5:
# Add noise
blank_image = np.zeros(image.shape, np.uint8)
cv2.randn(blank_image, 0, 5)
noisy_image = cv2.add(image, blank_image)
return noisy_image
else:
# Return the original image
return image
Роль этой функции - добавить шум к изображению с вероятностью 0,5.
Когда я начинаю тренировочный процесс (тренировка CNN), он работает в течение нескольких секунд, но происходит сбой из-за некоторой ошибки с функцией preprocess_other
с ошибкой, говорящей:
error: OpenCV(3.4.3) /io/opencv/modules/core/src/arithm.cpp:683:
error: (-5:Bad argument) When the input arrays in
add/subtract/multiply/divide functions have different types,
the output array type must be explicitly specified in function
'arithm_op'
Я отлаживал, но не мог понять причину этого. Я пытаюсь добавить шум неправильным способом? Как я могу исправить эту ошибку?