使用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)