相关疑难解决方法(0)

使用Python/PIL检测HSV颜色空间(来自RGB)的阈值

我想拍摄RGB图像并将其转换为黑白RGB图像,如果其HSV值在某个范围之间,则像素为黑色,否则为白色.

目前我创建了一个新图像,然后通过迭代其数据创建一个新的像素值列表,然后创建.putdata()该列表以形成新图像.

感觉应该有一个更快的方法来做这个,例如.point(),但似乎.point()没有得到像素,而是从0到255的值.是否有.point()转换,但像素?

python performance image image-processing python-imaging-library

10
推荐指数
2
解决办法
1万
查看次数

使用PIL进行RGB到HSV的转换

我正在尝试自动增强一些要转移到数字帧的图像.我有适当的代码调整大小,为图像的最不重要(最少细节)角添加日期/时间,并将成对的肖像图像粘贴在一起,以避免在帧的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整数)

先感谢您.

python color-space python-imaging-library

8
推荐指数
1
解决办法
9195
查看次数

根据RGB值更改图像的颜色

情况:

您有一个主色的图像,您需要根据给定的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

7
推荐指数
1
解决办法
2048
查看次数

如何以编程方式删除黑色网格?

我的想法是:

  • 1.0. [未解决,硬图像检测] 将图像分成正方形并去除边框,当然还有其他技术!

  • 1.1. [未解决] Imagemagick:裁剪(这里有说明),去除某些边框——这可能需要很多时间来定位网格,图像检测问题(这里比较白/黑)——或者可能有一些魔术棒样式的过滤器。

  • 1.2. [未解决] Python:你可能需要这个from PIL import Image

显然,Gimp 的橡皮擦是解决这个问题的错误方法,因为它速度慢且容易出错。您将如何以编程方式删除网格?

在此处输入图片说明

PS这个问题在Graphics.SE休闲讨论这里包含多个物理和机械黑客。

python graphics imagemagick image-recognition extraction

5
推荐指数
1
解决办法
2249
查看次数

RGB 到 HSV Python,不断改变色调

我想要做的是:不断改变图像的色调值,从 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)

python rgb hsv python-imaging-library

4
推荐指数
1
解决办法
6766
查看次数

使用scikit-image在HSV中进行颜色旋转

目的是将纯红色图像转换为色轮的任何色调.

  • 单色图像首先转换为RGB红色图像,例如: 原始的单色图像
  • 然后转换成HSV
  • 通过添加应该与轮颜色匹配的角度值来修改色调分量
  • 然后将hsv图像反转换为rgb颜色空间.

问题是只能获得绿色或蓝色图像(例如黄色,角度约为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 colors hsv scikit-image

3
推荐指数
1
解决办法
2808
查看次数