labelImg将图像标签显示到界面

打开View的显示类别

在这里插入图片描述
但是颜色不够清晰,我想自己定制
我的象棋红色和黑色两种。并且把字体方法一些。

在这里插入图片描述
可以看到

color = self.select_line_color if self.selected else self.line_color

参考:https://blog.csdn.net/qq_41082953/article/details/103302252

最终追溯到这里
libs/shape.py的
DEFAULT_LINE_COLOR = QColor(0, 255, 0, 225)
在这里插入图片描述
改造generateColorByText函数

generateColorByText 函数将输入文本转换为一个颜色值。它使用以下步骤:
将文本转换为 Unicode 字符串,以确保与 Python 3 的兼容性。
使用 hashlib.sha256 对文本进行哈希处理。这会生成一个唯一的十六进制哈希值。
将哈希值转换为一个整数。
使用除法运算,将整数分解为三个较小的值,分别代表红色 ®、绿色 (g) 和蓝色 (b) 通道的颜色值。
将每个颜色通道的值限制为 0 到 255 之间的范围。
创建一个 QColor 对象,其中包含生成的红色、绿色、蓝色和 alpha 通道值(设置为 100,表示半透明)。

def generateColorByText(text):
    s = ustr(text)
    hashCode = int(hashlib.sha256(s.encode('utf-8')).hexdigest(), 16)
    r = int((hashCode / 255) % 255)
    g = int((hashCode / 65025)  % 255)
    b = int((hashCode / 16581375)  % 255)
    return QColor(r, g, b, 100)

改为

def generateColorByText(text):
    s = ustr(text)
    hashCode = int(hashlib.sha256(s.encode('utf-8')).hexdigest(), 16)
    r = int((hashCode / 255) % 255)
    g = int((hashCode / 65025)  % 255)
    b = int((hashCode / 16581375)  % 255)
    # 检查文本中是否包含 "red""black" 标签
    if "红" in s:
        return QColor(255, 0, 0,255)
    elif "黑" in s:
        return QColor(0, 0, 0, 255)
    else:
        return QColor(r, g, b, 100)

效果图
右边标签透明度有点高,且字体有点小
在这里插入图片描述

改变透明度

def generateColorByText(text):
    s = ustr(text)
    hashCode = int(hashlib.sha256(s.encode('utf-8')).hexdigest(), 16)
    r = int((hashCode / 255) % 255)
    g = int((hashCode / 65025)  % 255)
    b = int((hashCode / 16581375)  % 255)
    # 检查文本中是否包含 "red""black" 标签
    if "红" in s:
        return QColor(255, 0, 0, 255)
    elif "黑" in s:
        return QColor(0, 0, 0, 255)
    else:
        return QColor(r, g, b, 100)

将255 改成 100

在这里插入图片描述

要修改 QColor 对象的透明度,同时保持其他颜色通道值不变,可以使用 setAlpha() 方法。以下是如何执行此操作:

# 创建一个具有红色不透明颜色的 QColor 对象
color = QColor(255, 0, 0, 100)

# 将透明度更改为 50%
color.setAlpha(50)

# 打印修改后的颜色值
print(color)

输出:

QColor(255, 0, 0, 50)

如你所见,红色、绿色和蓝色通道值保持不变,而 alpha 通道值已更改为 50,表示 50% 的透明度。

你还可以使用 QColor.getRgb() 方法获取颜色通道值,然后使用 QColor.fromRgb() 方法创建具有不同透明度的新颜色。以下是执行此操作的一种方法:

# 获取当前颜色通道值
r, g, b, a = color.getRgb()

# 创建一个具有相同颜色通道值但透明度为 50% 的新颜色
new_color = QColor.fromRgb(r, g, b, 50)

# 打印新颜色值
print(new_color)

输出:

QColor(255, 0, 0, 50)

这两种方法都可以让你修改 QColor 对象的透明度,同时保持其他颜色通道值不变。

在 def paint(self, painter):增加

 # 将透明度更改为 255 %
 color.setAlpha(255)

在这里插入图片描述

# 改变标签字体大小

最终效果图

猜你喜欢

转载自blog.csdn.net/mao_hui_fei/article/details/137618292