Я собираюсь создать набор данных изображений, используя тензорный поток, с помощью следующего метода.
def _parse_function(filename1, label):
image_string1 = tf.read_file(filename1)
image_decoded1 = tf.image.decode_jpeg(image_string1,channels=3)
image_decoded1 = tf.image.crop_to_bounding_box(image_decoded1,100,150,400,660)
image_resized1 = tf.image.resize_images(image_decoded1, [150, 200])/255
img1 = tf.image.rgb_to_grayscale(image_resized1)
# img1a = tf.squeeze(tf.image.rgb_to_grayscale(image_resized2))
return img1,label
train_dataset = tf.data.Dataset.from_tensor_slices((img1_train,label_train)).map(_parse_function)
Но я также хочу выполнить некоторые другие операции с набором данных. Извлечь из изображений область с определенным диапазоном hsv, что можно сделать в opencv с помощью следующих кодов. Но я не знаю, как интегрировать его в функцию _parse_, поскольку данные в функции _parse_ являются тензорными. Интересно, есть ли в тензорном потоке метод, который может это сделать, или есть другие способы? Заранее спасибо!
redLower = np.array([l_h, l_s, l_v])
redUpper = np.array([u_h, u_s, u_v])
hsv1 = cv2.cvtColor(img1, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv1, redLower, redUpper)
mask = cv2.erode(mask, None, iterations=2)
mask = cv2.dilate(mask, None, iterations=2)
mask = cv2.bitwise_not(mask)
img1_after = cv2.bitwise_and(img1,img1,mask=mask)