Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OpenCv Python将RGB图像拆分为RGB_Python_Opencv - Fatal编程技术网

使用OpenCv Python将RGB图像拆分为RGB

使用OpenCv Python将RGB图像拆分为RGB,python,opencv,Python,Opencv,当我分割我的图像时,我没有得到红色、绿色、蓝色的边框。我在输出中得到的帧是三幅灰色图像 import numpy as np import cv2 img=cv2.imread("C:\\Users\\Pavan\\Desktop\\bird.jpg") #display an image cv2.imshow('image',img) b,g,r=cv2.split(img) cv2.imshow('b',b) cv2.imshow('g',g) cv2.imshow('r',r) cv2.w

当我分割我的图像时,我没有得到红色、绿色、蓝色的边框。我在输出中得到的帧是三幅灰色图像

import numpy as np
import cv2
img=cv2.imread("C:\\Users\\Pavan\\Desktop\\bird.jpg")
#display an image
cv2.imshow('image',img)
b,g,r=cv2.split(img)
cv2.imshow('b',b)
cv2.imshow('g',g)
cv2.imshow('r',r)
cv2.waitKey(0)
cv2.destroyAllWindows()

尝试编写输出并调用特定变量,如所示

Blue=cv2.imwrite('Blue\u channel.jpg',b)


cv2.imshow('Blue Channel,Blue)
在Python/OpenCV/Numpy中有两种方法可以做到这一点

Method 1 is to copy the image 3 times and set the appropriate other channels to black

Method 2 is to split the image merge each with a black image for the other channels (suggested in comments by Mark Setchell)
输入:


红色:

绿色:

蓝色:


这是预期的输出。要查看颜色,你需要一个有3种颜色的RGB图像,一种颜色变成灰度仅仅是因为没有人知道那是什么颜色。这是正确和正常的。您已将3通道图像更改为3个不同的单通道图像。单通道图像不包含颜色,它是灰度图像。如果您想要蓝色,请使用
empty=np.zeroslike(b)
创建一个空通道,然后将蓝色与两个空通道合并
result=cv2.merge((b,empty,empty))
cv2.imwrite
返回
True/False
——这不是要传递给
cv2.imshow()的参数类型
如何“调用变量”?当然,您只“调用”函数,当使用变量时,您可以“设置”它们或“访问”它们的内容。
import cv2
import numpy as np

img = cv2.imread('mandril3.jpg')

# Method 1: copy image and set other channels to black
r = img.copy()
r[:,:,0] = r[:,:,1] = 0

g = img.copy()
g[:,:,0] = g[:,:,2] = 0

b = img.copy()
b[:,:,1] = b[:,:,2] = 0

cv2.imshow("red",r)
cv2.imshow("green",g)
cv2.imshow("blue",b)
cv2.waitKey(0)
cv2.destroyAllWindows()


# Method 2: split channels and merge with black channels
b,g,r = cv2.split(img)
k = np.zeros_like(b)
b = cv2.merge([b,k,k])
g = cv2.merge([k,g,k])
r = cv2.merge([k,k,r])

cv2.imshow("red",r)
cv2.imshow("green",g)
cv2.imshow("blue",b)
cv2.waitKey(0)
cv2.destroyAllWindows()

# save results
cv2.imwrite("mandril3_red.jpg", r)
cv2.imwrite("mandril3_green.jpg", g)
cv2.imwrite("mandril3_blue.jpg", b)