我想拍摄RGB图像并将其转换为黑白RGB图像,如果其HSV值在某个范围之间,则像素为黑色,否则为白色.
目前我创建了一个新图像,然后通过迭代其数据创建一个新的像素值列表,然后创建.putdata()该列表以形成新图像.
感觉应该有一个更快的方法来做这个,例如.point(),但似乎.point()没有得到像素,而是从0到255的值.是否有.point()转换,但像素?
python performance image image-processing python-imaging-library
我正在尝试自动增强一些要转移到数字帧的图像.我有适当的代码调整大小,为图像的最不重要(最少细节)角添加日期/时间,并将成对的肖像图像粘贴在一起,以避免在帧的41:20低分辨率屏幕中显示单个肖像.
我已经为那些光线不太好的照片实现了亮度拉伸滤镜,使用colorsys.rgb_to_hsv函数计算H,S,V波段,在V 1上运行,然后在保存JPEG之前转换回RGB.数码相框.显然,即使使用itertools技巧,转换也需要很长时间; 我设法改善使用的东西psyco.
但是,我注意到PIL的一个例子,Image.convert其中RGB可以使用4×4矩阵转换为XYZ颜色空间作为方法的第二个参数convert,我想知道:
如何在convert方法调用中使用自定义矩阵将RGB转换为HSV(然后将HSV转换回RGB)?(在这种情况下,小的舍入误差并不重要,所以我不介意每个波段将表示为一系列0 ... 255整数)
先感谢您.
您有一个主色的图像,您需要根据给定的rgb值将其转换为另一个.
有许多不同但相似的颜色也需要转换,这使得简单的"全部改变(0,0,0) - 像素 - ( - 0,100,200)"解决方案毫无价值.
如果有人能指出我正确的方向,那么算法或图像处理技术将使这项任务变得更易于管理.
我一直在使用PIL来尝试这个问题,但任何一般提示都会很好.
编辑:
另外,我已经使用了这个其他的答案(用Python PIL更改图像色调)来做我要求的部分(色调变化),但它没有考虑饱和度或值
编辑:http://dpaste.org/psk5C/显示使用pil来查看我必须使用的rgb值以及与之一起使用的hsv值.
python image-manipulation image-processing python-imaging-library
我想要做的是:不断改变图像的色调值,从 0 到 360,为每个色调保存一个图像。
我是如何尝试的:我首先使用在此链接上找到的代码,然后对其进行修改以更改色调并保存图像。
问题是什么:上面链接中的代码显然没有将图像保存为真正的 HSV,因为当它合并图像时,它使用图像模式 RGB。但我找不到办法让它成为 HSV。
def hueChange(img, hue):
if isinstance(img, Image.Image):
img.load()
r, g, b = img.split()
h_data = []
s_data = []
v_data = []
for rd, gr, bl in zip(r.getdata(), g.getdata(), b.getdata()):
h, s, v = colorsys.rgb_to_hsv(rd / 255., bl / 255., gr / 255.)
h_data.append(int(hue))
s_data.append(int(s * 255.))
v_data.append(int(v * 255.))
r.putdata(h_data)
g.putdata(s_data)
b.putdata(v_data)
return toRGB(Image.merge('RGB',(r,g,b)))
else:
return None
# Don't care about the …Run Code Online (Sandbox Code Playgroud) 目的是将纯红色图像转换为色轮的任何色调.

问题是只能获得绿色或蓝色图像(例如黄色,角度约为30°):

在一些ipython单元格中执行的代码依赖于scikit-image 0.10dev:
from skimage import io
from skimage import color
from scipy import ndimage as nd
import numpy as np
from matplotlib import pyplot as plt
import os
cy55 = io.imread('/home/jeanpat/MFISH/PSI/P07/01/Cy5/P070109C.tif')
zero = np.zeros(cy55.shape,dtype=np.uint8)
rgb0 = np.dstack([cy55, zero,zero])
hue_rotations = [18, 36,72,90,108]
images = {}
images[0] = rgb0
hsv0 = color.rgb2hsv(rgb0)
print hsv0[:,:,0].dtype
for hue in hue_rotations:
hsv = np.copy(hsv0)
hsv[:,:,0] = hsv[:,:,0]+ hue
rgb = color.hsv2rgb(hsv)
images[hue] = rgb
i = …Run Code Online (Sandbox Code Playgroud) python ×6
hsv ×2
color-space ×1
colors ×1
extraction ×1
graphics ×1
image ×1
imagemagick ×1
performance ×1
rgb ×1
scikit-image ×1