【问题标题】:2 bit per pixel tga's color to qRgb每像素 2 位 tga 的颜色到 qRgb
【发布时间】:2011-09-06 13:04:10
【问题描述】:

我需要用 pyqt 读取 tga,到目前为止,这似乎工作正常,除了 tga 每个像素有 2 个字节而不是 3 或 4 个字节。我的代码取自这里http://pastebin.com/b5Vz61dZ

特别是本节:

def getPixel( file, bytesPerPixel):
    'Given the file object f, and number of bytes per pixel, read in the next pixel and return a     qRgba uint'
    pixel = []
    for i in range(bytesPerPixel):
        pixel.append(ord(file.read(1)))

    if bytesPerPixel==4:
        pixel = [pixel[2], pixel[1], pixel[0], pixel[3]]
        color = qRgba(*pixel)
    elif bytesPerPixel == 3:
        pixel = [pixel[2], pixel[1], pixel[0]]
        color = qRgb(*pixel)
    elif bytesPerPixel == 2:
        # if greyscale
        color = QColor.fromHsv( 0, pixel[0] , pixel[1])
        color = color.value()

    return color

这部分:

elif bytesPerPixel == 2:
    # if greyscale
    color = QColor.fromHsv( 0, pixel[0] , pixel[1])
    color = color.value()

如何输入像素[0] 和像素[1] 值以创建正确格式和色彩空间的值?

请有任何想法、想法或帮助!!!

【问题讨论】:

    标签: colors pyqt rgb pixel tga


    【解决方案1】:
    pixel = [ pixel[1]*2 , pixel[1]*2 , pixel[1]*2 ]
    color = qRgb(*pixel)
    

    为我工作。正确的亮度和所有。虽然我不确定将像素 [1] 值加倍是否适用于所有实例。

    感谢您对 istepura 的所有帮助 :)

    【讨论】:

      【解决方案2】:

      http://lists.xcf.berkeley.edu/lists/gimp-developer/2000-August/013021.html

      “像素以小端顺序存储,采用 BGR555 格式。”

      因此,您必须将像素 [1] 的“最左侧” 5 位作为蓝色,其余 3 位 + 像素 [0] 的 2 位“最左侧”位将是绿色,然后像素 [0] 的下 5 位将是红色的。

      在你的情况下,我想,代码应该是这样的:

      pixel = [(pixel[1]&0xF8)>>3, ((pixel[1]&0x7)<<2)|((pixel[0]&0xC0)>>6), (pixel[0]&0x3E)>>1)
      color = qRgb(*pixel)
      

      【讨论】:

      • 谢谢,但这个代码在一个点 pixel[0] = 148 和 pixel[1] = 82。这意味着红色、graan 和蓝色通道将具有不同的像素值,即使图像是灰度的.另外请原谅我是个菜鸟,但您的语法似乎不起作用。我用的是python 2.6,你用的是更高版本还是只是注解?
      • @mushu。啊。没有注意到它是灰度图像。是 8 位灰度 + 8 位 alpha 吗?如果是这样,那么您可以将灰色像素 [1] 转换为 rgb,如 stackoverflow.com/q/835753/851055 中所述
      • 谢谢。我试过pixel = [ pixel[1] , pixel[1] , pixel[1] ]color = qRgb(*pixel),正如第一篇文章提到的那样,亮度不正确,但我尝试的第一个例子有效。您对如何校正亮度有任何想法吗?
      猜你喜欢
      • 1970-01-01
      • 2021-02-09
      • 2015-08-09
      • 2022-11-26
      • 2010-10-10
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多