AGG第五课 RGB颜色定义

本文详细介绍了AGG混色器的功能与使用方法,包括三种混色器:agg::rgba,agg::rgba8和agg::rgba16。重点解析了agg::rgba8的结构与成员函数,如颜色叠加、透明度设置等。

   混合器的存在是为了适应不同平台、不同需求下的不同像素格式。混合器有三种:agg::rgbaagg::rgba8agg::rgba16,都是用来指定颜色的,rgba每个通道储存为doublergba8unsigned charrgba16intlong int;混合器起到的作用就像Win32API里的RGBCOLORREF宏。

针对agg::rgba特别说明:每一个分量虽然使用double类型保存,但是实际上,取值区间是[0,1],agg::rgba8每一个分量的取值是[0,255]

头文件#include "agg_pixfmt_rgba.h"

类型定义

struct rgba8; //对,你没有看错,是结构,不是类……

基本成员函数

rgba8(unsigned r, unsigned g, unsigned b,unsigned a)

       无须解释了吧,最大255

clear(), no_color()

       四个通道全部清零,也就是变没色咯;

transparent()

       alpha清零,变透明;

opacity()

       返回透明度,用double表示;

gradient(agg::rgba8 &c, double k)

       颜色梯度,就是颜色变为从原先的颜色渐变为c,变化率为k

add(agg::rgba8 &c, unsinged cover)

       颜色叠加,叠加一个透明度为cover/255的颜色c

成员变量

 

r, g, b, a都是无符号整型;


     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1961156,如需转载请自行联系原作者




制作思维导图:通过继承 torch.nn.Module 类创建自定义神经网络模型,如 SimpleConvNet。 在 __init__ 方法中初始化网络层,使用 nn.Conv2d 定义卷积层,需要指定输入通道数、输出通道数、卷积核大小和填充等参数。 实现 forward 方法定义模型的前向传播逻辑,该方法接收输入张量并返回输出张量。 张量操作: 使用 torchvision.transforms.ToTensor() 将 PIL 图像转换为 PyTorch 张量。 通过 unsqueeze(0) 方法在张量的第 0 维增加一个维度,以满足模型输入的批量维度要求。 使用 detach().numpy() 将 PyTorch 张量转换为 NumPy 数组,方便后续使用 matplotlib 进行可视化。 3. PyQt5 GUI 开发 GUI 应用程序初始化: 创建 QApplication 实例来管理整个 GUI 应用程序的事件循环和资源。 创建继承自 QWidget 的自定义窗口类(如 ImageFeatureExtractor),并在其中初始化界面组件。 布局管理: 使用 QVBoxLayout 进行垂直布局,将不同的 GUI 组件(如按钮、标签)按垂直方向排列。 通过 addWidget 方法将组件添加到布局中,最后使用 setLayout 方法将布局应用到窗口。 GUI 组件使用: QPushButton:创建按钮,通过 clicked.connect() 方法将按钮的点击事件与特定的槽函数(如 select_image)绑定。 QLabel:用于显示文本或图像,通过 setPixmap 方法将 QPixmap 对象显示在标签上。 QFileDialog:弹出文件选择对话框,允许用户选择文件,使用 getOpenFileName 方法获取用户选择的文件路径。 信号与槽机制: 信号是对象发出的事件通知,槽是对信号做出响应的函数。在 PyQt5 中,通过 connect 方法将信号和槽函数连接起来,实现交互功能。 4. 图像预处理与操作 torchvision.transforms: 使用 transforms.Compose 组合多个图像预处理操作,包括 Resize 和 ToTensor。 Resize:将图像调整为指定的大小(如 (224, 224))。 ToTensor:将 PIL 图像转换为 PyTorch 张量,同时将像素值归一化到 [0, 1] 范围。 PIL.Image: 使用 Image.open 方法打开图像文件。 通过 convert('RGB') 方法将图像转换为 RGB 模式,确保图像为 3 通道,避免卷积层输入通道不匹配的问题。 5. 数据可视化与处理 matplotlib: 通过 matplotlib.use('Agg') 指定后端为 Agg,避免后端相关的错误,适用于非交互式环境。 使用 plt.subplots 创建子图布局,用于同时显示多个特征图。 使用 imshow 方法在子图中显示特征图,并通过 cmap 参数指定颜色映射(如 viridis)。 使用 savefig 方法将绘制好的图形保存到 BytesIO 对象中,方便后续在 GUI 中显示。 使用 plt.close() 关闭图形窗口,释放资源。 BytesIO: 用于在内存中临时存储二进制数据,避免频繁读写文件,提高效率。在将 matplotlib 绘制的特征图保存到内存中后,可通过 QPixmap.loadFromData 方法将其加载到 QPixmap 对象中。 6. 代码调试与日志输出 print 语句:在关键位置添加 print 语句输出调试信息,如输入输出张量的形状、文件路径、操作结果等,方便在开发和调试过程中查看程序的运行状态。
最新发布
04-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值