Как получить одноцветный канал изображения без использования функции разделения в OpenCV Python?

Я хотел бы выделить руку для распознавания жестов в реальном времени. Я заметил, что изображение руки подсвечивается по-разному для разных цветовых каналов с помощью функции cv2.imsplit. Но эта функция разделения очень дорогая с точки зрения времени. Я не могу выполнять те же функции с помощью индексации Numpy (как указано на официальной странице)

2 ответа

Вы можете использовать кусочек numpy:

import cv2
import numpy as np

## read image as np.ndarray in BGR order
img = cv2.imread("test.png")


## use OpenCV function to split channels
b, g, r = cv2.split(img)

## use numpy slice to extract special channel
b = img[...,0]
g = img[...,1]
r = img[...,2]
import cv2
import numpy as np
from PIL import Image

img_file = "sample.jpg"
image = cv2.imread(img_file)

# USING NUMPY SLICE
red = image[:,:,2]
green = image[:,:,1]
blue = image[:,:,0]

# USING OPENCV SPLIT FUNCTION
r,g,b=cv2.split(image)

# USING NUMPY dsplit
[b,g,r]=np.dsplit(image,image.shape[-1])

# USING PIL 
image = Image.open("image.jpg")
r,g,b = image.split()
Другие вопросы по тегам