Использовать OpenCV не так сложно, чтобы получить вывод одного цветового канала из изображения, и это легко сделать.
Но возможно ли, что из трех основных цветов BGR изображения я хочу видеть изображение в комбинации зеленого и красного без синего, используя функцию напрямую?
Таким образом, я могу выполнить вышеуказанную операцию, установив для всех значений синего цвета значение 0 и затем увидеть изображение, код которого приведен ниже:
import cv2
import numpy as np
gr = cv2.imread('imagetowork2.jpg')
gr[:, :, 0] = 0
cv2.namedWindow("random_image",cv2.WINDOW_NORMAL)
cv2.resizeWindow("random_image",590,332)
cv2.imshow("random_image",gr)
cv2.waitKey(0)
cv2.destroyAllWindows()
К приведенному выше коду мне пришлось прибегнуть, потому что работа с этим gr[:, :, 1:3]
не сработала. И я не понимаю, почему функции cv2 работают со всеми трехмерными значениями, а не с двумя измерениями?
Это ошибка, которая возникает, если они пытаются показать изображение, используя gr[:, :, 1:3]
:
error: OpenCV(3.4.5) C:\projects\opencv-python\opencv\modules\imgcodecs\src\utils.cpp:622: error: (-15:Bad number of channels) Source image must have 1, 3 or 4 channels in function 'cvConvertImage'
Итак, мой прямой и главный вопрос: есть ли встроенная функция для выполнения этого в OpenCV или любой другой библиотеке напрямую или же установка целого значения цвета как 0 - единственный способ сделать это?
Итак, это изображение, над которым я работаю (на самом деле может использовать любой вид изображения):
И это вывод того, что я выполнил (который я хочу получить, используя некоторую встроенную функцию и не устанавливая некоторые значения в 0):
Это вообще возможно?