这个问题在这里已经有了答案:HowcanIconvertanRGBimageintograyscaleinPython?(14个答案)关闭4年前。使用Numpy将大小为(x,y,3)的rgb像素值数组转换为大小为(x,y,1)的灰度像素值数组的最佳方法是什么?我有一个函数rgbToGrey(rgbArray)可以获取[r,g,b]数组并返回灰度值。我想将它与Numpy一起使用,以将数组的第3维从大小3缩小到大小1。我该怎么做?注意:如果我有原始图像并且可以先使用Pillow对其进行灰度化,这将非常容易,但我没有。更新:我要找的函数是np.dot()。来自这个问题的答案:假设我们通过公式
我正在使用python的colorsys库将RGB颜色值转换为HLS。只是为了验证,我尝试转换回RGB并得到不同的值。由于精度问题,我可以理解细微差别,但这些值有很大不同。这是我的代码:importcolorsysr=192g=64b=1hlsval=colorsys.rgb_to_hls(r,g,b)rgbval=colorsys.hls_to_rgb(hlsval[0],hlsval[1],hlsval[2])printhlsval,rgbval输出:(0.16666666666666666,96.5,-1.0)(191.99999999999994,192.0,1.0)绿色值相差
如果我有一个RGB小数,例如255,165,0,我该怎么做才能将其转换为CMYK?例如:>>>red,green,blue=255,165,0>>>rgb_to_cmyk(red,green,blue)(0,35,100,0) 最佳答案 这是Javascriptimplementation的Python端口.RGB_SCALE=255CMYK_SCALE=100defrgb_to_cmyk(r,g,b):if(r,g,b)==(0,0,0):#blackreturn0,0,0,CMYK_SCALE#rgb[0,255]->cmy[0
我正在尝试自动增强一些要传输到数码相框的图像。我有调整大小的代码,将日期/时间添加到图像的最不重要(最少细节)的角落并将成对的肖像图像粘贴在一起以避免在框架的41:20低分辨率屏幕中显示单个肖像。我使用colorsys.rgb_to_hsv为那些光线不太好的图片实现了亮度拉伸(stretch)滤镜。计算H、S、V波段的函数,对V波段进行操作,然后在将JPEG保存在数字帧中之前转换回RGB。显然,转换需要很多时间,即使使用itertools技巧;我设法使用psyco改进了一些东西.但是,我注意到PIL的示例Image.convert其中RGB可以转换为XYZcolorspace使用4×4
我有代码:importpygame.camerapygame.camera.init()cam=pygame.camera.Camera(pygame.camera.list_cameras()[0])cam.start()img=cam.get_image()img变量是我找到了getnumpyarrayfrompygame但我仍然不知道如何有效地将它转换为RGB颜色的numpy数组。 最佳答案 用于从classpygame.Surface抓取3D图像数据,使用.array3d(),正如文档所述-Copypixelsintoa3d
使用Python图像库,我可以调用img.convert("P",palette=Image.ADAPTIVE)或img.convert("P",palette=Image.WEB)但有没有办法转换成任意调色板?p=[]foriinrange(0,256):p.append(i,0,0)img.convert("P",palette=p)它将在哪里将每个像素映射到图像中找到的最接近的颜色?还是Image.WEB仅支持此功能? 最佳答案 在查看convert()的源代码时,我发现它引用了im.quantize。quantize可以采用
我有一个形状为(34799,32,32,3)的numpy数组,这意味着(numexamples,width,height,channels)。现在我使用以下代码规范化图像数据:defnormalize(x):return(x-128)/128X_train_norm=normalize(X_train)但是结果好像不对,X_train[0][0][0]的值是[282524],但是的输出>X_train_norm[0][0][0]是[1.218751.19531251.1875]。我使用以下测试代码:test=np.array([[[[28,25,24]]]])print((test-1
我正在尝试在matplotlib中重现此图(取自维基百科)基本上是一个2dhsv颜色空间,其中饱和度设置为1.0。这是我到目前为止所做的frompylabimport*fromnumpyimportouterx=outer(arange(0,1,0.01),ones(100))imshow(transpose(x),cmap=cm.hsv)show()这绘制了色调channel,但我不知道如何添加第二个channel。 最佳答案 您需要创建HSV数组并将其转换为RGB,这是一个示例:importnumpyasnpimportpyla
我有一张RGB图像,我想将其转换为灰度图像,这样我就可以为每个像素指定一个数字(可能介于0和1之间)。这给了我一个矩阵,它的尺寸等于图像像素的尺寸。然后我想对这个矩阵做一些操作,并从这个被操作的矩阵生成一个新的灰度图像。我该怎么做? 最佳答案 我经常使用NumPy数组形式的图像-我是这样做的:importnumpyasnpfromPILimportImagex=Image.open('im1.jpg','r')x=x.convert('L')#makesitgreyscaley=np.asarray(x.getdata(),dtyp
我想用Python改变一种颜色。如果存在使用PIL的快速解决方案,我会更喜欢此解决方案。目前,我使用convert-backgroundblack-opaque'#939393'MyImage.pngMyImage.png 最佳答案 如果numpy在您的机器上可用,请尝试执行以下操作:importnumpyasnpfromPILimportImageim=Image.open('fig1.png')data=np.array(im)r1,g1,b1=0,0,0#Originalvaluer2,g2,b2=255,255,255#Va