如何在不使用opencvpython中的split函数的情况下获得图像的单色通道?

2024-10-01 17:37:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想突出显示一只手用于实时手势识别。我观察到,使用cv2.imsplit函数,手的图像在不同的颜色通道中得到不同的高亮显示。但这种分割功能在时间上是非常昂贵的。我不能使用Numpy索引来执行相同的功能(正如在official page上给出的那样)


Tags: 函数图像功能numpy颜色时间pagecv2
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
b,g,r=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()

您可以使用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]

相关问题 更多 >

    热门问题