easyX库图像处理相关函数(注释版)

news2024/10/7 9:19:50

0.图像处理相关函数与类型概览

您好,这里是limou3434,本次我将给您带来的是easyX的图像处理相关接口。

如果您感兴趣也可以看看我的其他内容。

函数或数据类型描述
IMAGE保存图像的对象。
loadimage读取图片文件。
putimage在当前绘图设备上绘制指定图像。
rotateimage旋转 IMAGE 中的绘图内容。
Resize调整指定绘图设备的尺寸。
getimage从当前绘图设备中获取图像。
saveimage保存绘图内容至图片文件。
SetWorkingImage设定当前绘图设备。
GetWorkingImage获取指向当前绘图设备的指针。
GetImageBuffer获取绘图设备的显示缓冲区指针。
GetImageHDC获取绘图设备句柄。

1.IMAGE:图像对象

图像类使用的是C++的class类关键字创建的,可以依靠图像类创建出图像对象。(您可以把class理解成升级版的struct,里面不仅有成员变量,还能放入成员函数)

class IMAGE(int width = 0, int height = 0);
//公有成员内的函数
//int getwidth():返回IMAGE对象的宽度,以像素为单位
//int getheight():返回IMAGE对象的高度,以像素为单位
//operator=:实现IMAGE对象的直接赋值。该操作仅拷贝源图像的内容,不拷贝源图像的绘图环境。这是赋值运算符重载,可以使得两个图像对象进行赋值操作

2.loadimage:读取图片文件

loadimage()是配合上述的对象使用的函数,该函数可以读取一个图片文件,并让IMAGE类型的指针指向该图片文件。该函数也有重载版本,有两种用法。

//从图片文件获取图像(bmp/gif/jpg/png/tif/emf/wmf/ico)
void loadimage(
	IMAGE* pDstImg,			//保存图像的IMAGE对象指针
	LPCTSTR pImgFile,		//图片文件名
	int nWidth = 0,			//图片的拉伸宽度
	int nHeight = 0,		//图片的拉伸高度
	bool bResize = false	//是否调整IMAGE的大小以适应图片
);
//从资源文件获取图像(bmp/gif/jpg/png/tif/emf/wmf/ico)
void loadimage(
	IMAGE* pDstImg,			//保存图像的IMAGE对象指针
	LPCTSTR pResType,		//资源类型
	LPCTSTR pResName,		//资源名称
	int nWidth = 0,			//图片的拉伸宽度
	int nHeight = 0,		//图片的拉伸高度
	bool bResize = false	//是否调整IMAGE的大小以适应图片
);

//参数
//pDstImg:保存图像的IMAGE对象指针。如果为NULL,表示图片将读取至绘图窗口
//pImgFile:图片文件名。支持bmp/gif/jpg/png/tif/emf/wmf/ico 格式的图片。gif格式的图片仅加载第一帧;gif与png均不支持透明
//nWidth:图片的拉伸宽度。加载图片后,会拉伸至该宽度。如果为0,表示使用原图的宽度
//nHeight:图片的拉伸高度。加载图片后,会拉伸至该高度。如果为0,表示使用原图的高度。
//bResize:是否调整IMAGE的大小以适应图片
//pResType:图片资源类型
//pResName:图片资源名称

//返回值
//无

2.1.图片格式

需要注意的是loadimage()支持大部分的图片格式:bmp、gif、jpg、png、tif、emf、wmf、ico。这里我整理了一下有关图片格式的相关内容供您查阅:

  1. BMP(Bitmap):
  • 包含未经压缩的图像数据,文件大小较大。
  • 支持多种颜色模式和图像深度。
  • 适用于存储位图和图形编辑软件中的临时图像。
  1. GIF(Graphics Interchange Format):
  • 使用LZW压缩算法来减小文件大小。
  • 支持使用索引颜色的图像,最多仅支持256种颜色。
  • 支持动画和透明背景。
  • 适用于简单的图标、动画、线条图等具有明确边界和较少颜色的图像。
  1. JPG或JPEG(Joint Photographic Experts Group):
  • 使用有损压缩算法以较小的文件大小存储图像。
  • 支持全彩色图像和较高的图像质量。
  • 不支持透明背景和动画。
  • 适用于摄影、复杂图像和需要保持良好质量的图像。
  1. PNG(Portable Network Graphics):
  • 使用无损压缩算法以较小的文件大小存储图像。
  • 支持全彩色图像、透明背景和图像的部分alpha通道。
  • 不支持动画。
  • 适用于图标、图形设计、网页图像和需要保留透明度的图像。
  1. TIFF(Tagged Image File Format):
  • 支持多种压缩算法,可以选择有损或无损压缩。
  • 支持全彩色图像、多页文档和多帧动画。
  • 文件大小较大,不适合网络传输。
  • 适用于打印、出版业、医学图像等需要高质量图像和元数据的场景。
  1. EMF(Enhanced Metafile)和WMF(Windows Metafile):
  • 为矢量图形格式,可缩放而不失真。
  • EMF是Windows特定的增强型元文件格式,支持更多功能。
  • WMF是旧版的Windows元文件格式。
  • 适用于矢量图形、图表、图标、绘图程序等需要保持较好清晰度和编辑能力的场景。
  1. ICO(Icon):
  • 用于存储图标文件,通常用于Windows操作系统。
  • 支持多种尺寸的图标图像。
  • 适用于自定义应用程序图标、网站图标等。

在上述图片格式中,您最需要了解的图片格式是GIF、PNG、JPG/JPEG,因为这是最常用的图片格式,其他仅作了解即可。

2.2.图像文件获取和资源文件获取的区别

从资源文件获取这个暂时还用不到,先跳过,这里先展示图像文件获取的例子:

#include <graphics.h>
#include <cstdio>
int main()
{
	//绘图窗口初始化
	initgraph(1000, 1000, EX_SHOWCONSOLE);

	//读取图片至绘图窗口
	loadimage(NULL, _T("C:\\Users\\DELL\\Desktop\\SummerHolidaysFile\\GSnakeEasyxProject\\testPicture2.jpg"), 0, 0, true);//这里填写您图片的路径即可
	getchar();

	//关闭绘图窗口
	closegraph();
	getchar();
	return 0;
}

在这里插入图片描述

3.putimage:在当前绘图设备上绘制指定图像

我们可以通过loadimage()读取图片,然后存储到IMAGE类型的对象中,在后续需要输出图片的时候使用putimage()输出图片。

//绘制图像
void putimage(
	int dstX,				//绘制位置的x坐标
	int dstY,				//绘制位置的y坐标
	IMAGE *pSrcImg,			//要绘制的IMAGE对象指针
	DWORD dwRop = SRCCOPY	//三元光栅操作码
);
//绘制图像(指定宽高和起始位置)
void putimage(
	int dstX,				//绘制位置的x坐标
	int dstY,				//绘制位置的y坐标
	int dstWidth,			//绘制的宽度
	int dstHeight,			//绘制的高度
	IMAGE *pSrcImg,			//要绘制的IMAGE对象指针
	int srcX,				//绘制内容在IMAGE对象中的左上角 x 坐标
	int srcY,				//绘制内容在IMAGE对象中的左上角 y 坐标
	DWORD dwRop = SRCCOPY	//三元光栅操作码
);

这里的三元光栅操作码我们以后再谈……

//使用例子
#include <graphics.h>
#include <cstdio>
int main()
{
	//绘图窗口初始化
	int length = 1000;
	int width = 1000;
	initgraph(length, width, EX_SHOWCONSOLE);

	//坐标轴修正
	setaspectratio(1, -1);
	setorigin(length / 2, width / 2);

	//读取图片至绘图对象
	IMAGE img1;
	loadimage(
		&img1,
_T("C:\\Users\\DELL\\Desktop\\SummerHolidaysFile\\GSnakeEasyxProject\\testPicture2.jpg")
	);
	putimage(0, 0, &img1);
	getchar();

	//关闭绘图窗口
	closegraph();
	return 0;
}

在这里插入图片描述

4.rotateimage:旋转IMAGE中的绘图内容

在上面的图片输出中我们可以看到,easyX库对图片方向的输出是有自己的默认规则的,想要选择只能通过rotateimage()来选择,而不能旋转图片文件。

void rotateimage(
	IMAGE *dstimg,
	IMAGE *srcimg,
	double radian,
	COLORREF bkcolor = BLACK,
	bool autosize = false,
	bool highquality = true
);
//参数
//dstimg:指定目标IMAGE对象指针,用来保存旋转后的图像
//srcimg:指定原IMAGE对象指针
//radian:指定旋转的弧度
//bkcolor:指定旋转后产生的空白区域的颜色。默认为黑色
//autosize:指定目标IMAGE对象是否自动调整尺寸以完全容纳旋转后的图像。默认为false
//highquality:指定是否采用高质量的旋转。在追求性能的场合请使用低质量旋转。默认为true

这个函数也比较简单,下面给您展示一下使用的例子:

//使用例子
#include <graphics.h>
#include <cstdio>
int main()
{
	//绘图窗口初始化
	int length = 1000;
	int width = 1000;
	initgraph(length, width, EX_SHOWCONSOLE);

	//坐标轴修正
	setaspectratio(1, -1);
	setorigin(length / 2, width / 2);

	//读取图片至绘图对象
	IMAGE img1;
	loadimage(
		&img1,
		_T("C:\\Users\\DELL\\Desktop\\SummerHolidaysFile\\GSnakeEasyxProject\\testPicture2.jpg")
	);
	putimage(0, 0, &img1);
	getchar();

	//旋转后
	IMAGE img2;
	rotateimage(&img2, &img1, 3.14/2);
	putimage(-500, -500, &img2);
	getchar();

	//关闭绘图窗口
	closegraph();
	return 0;
}

5.Resize:调整指定绘图设备的尺寸

注意这里的调整尺寸指的是裁剪尺寸不是缩放后的尺寸。

void Resize(
	IMAGE* pImg,
	int width,
	int height
);
//参数
//pImg:指定要调整尺寸的绘图设备。如果为NULL,则表示默认绘图窗口。
//width:指定绘图设备的宽度。
//height:指定绘图设备的高度。

//返回值
//无

下面以一个例子来说明:

//使用例子
#include <graphics.h>
#include <cstdio>
int main()
{
	//绘图窗口初始化
	int length = 1000;
	int width = 1000;
	initgraph(length, width, EX_SHOWCONSOLE);

	//读取图片至绘图对象
	IMAGE img1;
	loadimage(
		&img1,
		_T("C:\\Users\\DELL\\Desktop\\SummerHolidaysFile\\GSnakeEasyxProject\\testPicture2.jpg")
	);
	putimage(0, 0, &img1);
	getchar();

	//调整好大小后
	Resize(&img1, 500, 500);
	putimage(100, 100, &img1);
	getchar();
		
	closegraph();
	return 0;
}

在这里插入图片描述

6.getimage:从当前绘图设备中获取图像

这个函数可以实现在当前设备中裁剪图像区域并且实现复制图像区域的效果。

void getimage(
	IMAGE* pDstImg,		//保存图像的IMAGE对象指针
	int srcX,			//要获取图像区域左上角x坐标
	int srcY,			//要获取图像区域的左上角y坐标
	int srcWidth,		//要获取图像区域的宽度
	int srcHeight		//要获取图像区域的高度
);

下面就一个例子来演示这个函数的使用:

//使用例子
#include <graphics.h>
#include <cstdio>
int main()
{
	//绘图窗口初始化
	int length = 1000;
	int width = 1000;
	initgraph(length, width, EX_SHOWCONSOLE);

	//读取图片至绘图对象
	IMAGE img1;
	loadimage(
		&img1,
		_T("C:\\Users\\DELL\\Desktop\\SummerHolidaysFile\\GSnakeEasyxProject\\testPicture2.jpg")
	);
	putimage(0, 0, &img1);
	getchar();

	//旋转后
	IMAGE img2;
	rotateimage(&img2, &img1, 3.14/2, WHITE);
	putimage(0, 0, &img2);
	getchar();

	//复制区域的图像并且输出
	IMAGE img3;
	getimage(&img3, 200, 200, 300, 300); 
	putimage(0, 0, &img3);
	getchar();

	closegraph();
	return 0;
}

因此上面这段代码的结果如下:
在这里插入图片描述

7.saveimage:保存绘图内容至图片文件

void saveimage(
	LPCTSTR strFileName,
	IMAGE* pImg = NULL
);
//参数
//strFileName:指定目标图片的文件名。图片类型由文件名的扩展名指定,支持bmp/gif/jpg/png/tif 格式。保存文件时,已存在的文件将被覆盖。
//pImg:指定源IMAGE对象的指针。如果为NULL,表示绘图窗口。

//返回值
//无

让我们尝试保存刚刚绘画得到的图像:

//使用例子
#include <graphics.h>
#include <cstdio>
int main()
{
	//绘图窗口初始化
	int length = 1000;
	int width = 1000;
	initgraph(length, width, EX_SHOWCONSOLE);

	//读取图片至绘图对象
	IMAGE img1;
	loadimage(
		&img1,
_T("C:\\Users\\DELL\\Desktop\\SummerHolidaysFile\\GSnakeEasyxProject\\testPicture2.jpg")
	);
	putimage(0, 0, &img1);
	getchar();

	//旋转后
	IMAGE img2;
	rotateimage(&img2, &img1, 3.14/2, WHITE);
	putimage(0, 0, &img2);
	getchar();

	//复制区域的图像并且输出
	IMAGE img3;
	getimage(&img3, 200, 200, 300, 300); 
	putimage(0, 0, &img3);
	getchar();

	//保存图像
	saveimage("C:\\Users\\DELL\\Desktop\\SummerHolidaysFile\\GSnakeEasyxProject\\img.jpg");

	closegraph();
	return 0;
}

8.SetWorkingImage:设定当前绘图设备

如需要对某个IMAGE做绘图操作,可以通过SetWorkingImage()将其设置为当前的绘图设备,之后所有的绘图语句都会绘制在该IMAGE上面。将参数置为 NULL 可恢复对默认绘图窗口的绘图操作。

void SetWorkingImage(IMAGE* pImg = NULL);
//参数
//pImg:绘图设备指针。如果为NULL,表示绘图设备为默认绘图窗口。

//返回值
//无

下面举一个例子来说明SetWorkingImage()的使用:

//使用例子 
#include <graphics.h> 
#include <cstdio> int main() 
{
  	//绘图窗口初始化 
  	int length = 1000; 
  	int width = 1000; 
  	initgraph(length, width, EX_SHOWCONSOLE); //读取图片至绘图对象 
  	IMAGE img1; 
 	loadimage( &img1, _T("C:\\Users\\DELL\\Desktop\\SummerHolidaysFile\\GSnakeEasyxProject\\testPicture2.jpg") );
  	putimage(0, 0, &img1); 
  	getchar(); //以下绘图操作都会绘制在img1对象上面 
  	line(0 + 100, 100, 200 + 100, 100); 
  	line(100 + 100, 0, 100 + 100, 200);
  	circle(100 + 100, 100, 50); //设置绘图目标为img1对象
  	SetWorkingImage(&img1);
  	printf("img1\n"); 
  	getchar(); //设置绘图目标为绘图窗口 
  	SetWorkingImage();
  	line(0, 100, 200, 100); 
  	line(100, 0, 100, 200); 
  	circle(100, 100, 50); 
  	printf("绘图窗口\n"); 
  	getchar(); 
  	closegraph();
  	return 0; 
}

在这里插入图片描述

9.GetWorkingImage:获取指向当前绘图设备的指针

IMAGE* GetWorkingImage();
//参数
//无

//返回值
//返回指向当前绘图设备的指针。如果返回值为NULL,表示当前绘图设备为绘图窗口。

10.GetImageBuffer:获取绘图设备的显示缓冲区指针

这个函数比较强大,能够做到很微小的像素改动。

DWORD* GetImageBuffer(IMAGE* pImg = NULL);
//参数
//pImg:绘图设备指针。如果为 NULL,表示默认的绘图窗口。

//返回值
//返回绘图设备的显示缓冲区指针。

获取到的显示缓冲区指针可直接读写。在显示缓冲区中每个点占用4个字节(显示缓冲区的大小=宽度×高度×4字节)。
像素点在显示缓冲区中按照从左到右、从上向下的顺序依次排列。
访问显示缓冲区请勿越界,否则会造成难以预料的后果。显示缓冲区中的每个点对应 RGBTRIPLE 类型的结构体:

struct RGBTRIPLE {
	BYTE rgbtBlue;
	BYTE rgbtGreen;
	BYTE rgbtRed;
}

RGBTRIPLE在内存中的表示形式为:0xrrggbb (bb=蓝,gg=绿,rr=红),而常用的COLORREF在内存中的表示形式为:0xbbggrr。注意两者的红色和蓝色是相反的,请用BGR宏交换红色和蓝色。
如果操作绘图窗口的显示缓冲区,请在操作完毕后,执行 FlushBatchDraw() 使操作生效。

//使用例子
#include <graphics.h>
#include <windows.h>
#include <cstdio>
int main()
{

	//初始化绘图窗口
	initgraph(640, 480, EX_SHOWCONSOLE);

	//获取指向显示缓冲区的指针
	DWORD* pMem = GetImageBuffer();//不写默认为NULL(表示默认的绘图窗口)

	//直接对显示缓冲区赋值
	for (int i = 0; i < 640 * 480; i++)
	{
		pMem[i] = BGR(RGB(0, 0, i * 256 / (640 * 480)));
		if (i % 1000 == 0)
		{
			Sleep(100);
		}
	}

	//使显示缓冲区生效(注:操作指向IMAGE的显示缓冲区不需要这条语句)
	FlushBatchDraw();
	//在计算机图形编程中,
	//我们经常需要将绘制的图形显示在屏幕上。
	//而绘制图形是一个相对耗费资源的操作,
	//如果每次绘制都立即显示在屏幕上,
	//会导致频繁的图形刷新,
	//可能会引起画面闪烁或者卡顿的问题。
	//为了提高绘制的效率和流畅度,
	//就引入了批量绘制的概念。
	//FlushBatchDraw()的作用是将之前批量绘制的图形一次性地刷新到屏幕上。
	//通俗地说,就好比是一个“提交”操作,
	//你之前进行的所有绘制都会在调用FlushBatchDraw()后一起显示在屏幕上

	//按任意键退出
	getchar();
	closegraph();

	return 0;
}

11.GetImageHDC:获取绘图设备句柄

这个函数以后再来补充……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/704221.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高压线路距离保护程序逻辑原理(三)

阻抗元件的主要程序功能是阻抗计算&#xff0c;即第二章的解微分方程算法。配合低通数字滤波器计算出故障点至保护安装处的感受电抗X和电阻R值&#xff0c;再同整定值比较以确定是否在区内。阻抗元件也可以采用其他算法计算阻抗&#xff0c;但应指出上述哪种计算感受电抗和电阻…

如何去伪存真高效挖掘用户真实需求?2大模型

用户需求描述模糊&#xff0c;不清晰&#xff0c;往往对项目造成不可估量的风险&#xff1a;需求理解错误、新增需求、变更需求等问题&#xff0c;从而影响项目按时交付。 那么如何更准确地描述用户需求&#xff0c;就显得尤为重要。而可行性较强的模型主要有两种&#xff1a;5…

Django纪录操作之增删改查

一、单表 1、 添加记录 准备表 from django.db import modelsclass Book(models.Model):title models.CharField(max_length20)price models.DecimalField(max_digits65,decimal_places5)publish models.CharField(max_length30)pub_date models.DateTimeField(auto_now…

阿里云盘如何实现 大文件 秒上传?

文章目录 Intro极速上传的原因隐私保护 Intro 今天把几个软件上传到阿里云盘进行分享&#xff0c;文件大小将近1GB&#xff0c;按理说上传需要个2~3分钟吧。 之前上传一个压缩包看到上传速度大概是4~5MB/s。 但是我刚到别的软件看了一圈&#xff0c;回来发现文件居然已经上传…

网络攻防基础(复习)

文章目录 第 1 章 软件与系统安全概述第 2 章 扫描与防御技术2.1 扫描技术概述2.2 常见的扫描技术2.3 扫描工具2.4 扫描的防御 第 3 章 网络监听及防御技术3.1 网络监听概述3.2 监听技术3.3 监听的防御 第 4 章 口令破解与防御技术4.1 口令的历史与现状4.2 口令破解方式4.3 典型…

基于遗传算法(GA)的多旅行商问题(MTSP)

matlab2016b可运行&#xff0c;输入城市位置&#xff0c;可以动态显示规划过程 % MTSPF_GA Fixed Multiple Traveling Salesmen Problem (M-TSP) Genetic Algorithm (GA) % Finds a (near) optimal solution to a variation of the M-TSP by setting % up a GA to search …

前后端分离,通用分页js处理模板

截图&#xff1a; 步骤&#xff1a; 第一步&#xff1a;创建一个index.html引入 <script src"./jquery-3.7.0.js"></script><link rel"stylesheet" href"https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstra…

想要wav转换mp3软件?看我给你分享将wav转换成mp3的软件

你是否曾经遇到过这样的情况&#xff1a;下载了一首你喜爱的音乐&#xff0c;却发现它的格式是wma&#xff0c;无法在你的设备或播放器上正常播放&#xff1f;别担心&#xff0c;今天我将向你介绍几款wma转换器&#xff0c;让你能够轻松转换音频格式&#xff0c;不再困惑于wma转…

Samba协议实现视频上传、远程播放

一、效果演示 扫码打开上传页面&#xff0c;上传进度可以全局筛选订单查看&#xff0c;上传过程中查看视频是本地视频&#xff08;速度快&#xff09;&#xff0c;上传完成后再次打开是smb服务器视频&#xff08;打开慢&#xff09; 本文涉及demo参考下载 二、集成smbj 1、集…

写毕业论文之前一定要看的经验总结!!!

本文为笔者关于毕业论文的经验总结 如果本文有错误的地方 或者关于论文有什么更好的经验分享欢迎私信或者评论指出 打开word的格式标记 打开标尺 摘要 标题 目录 分页 页码 图片 表格 参考文献 打开word的格式标记 word格式标记并不是真的存在&#xff0c;只是帮你你修改word时…

嵌入式工作的前景:为什么嵌入式系统需求仍在增长

嵌入式系统的需求在过去几十年中一直稳步增长&#xff0c;并且预计在未来仍然会继续增加。嵌入式系统是指嵌入到其他设备或系统中的计算机系统&#xff0c;它们具有特定的功能和任务。这些系统广泛应用于汽车、消费电子产品、医疗设备、智能家居、工业自动化等领域。 随着科技…

Quiz 10: Tuples | Python for Everybody 配套练习_解题记录

文章目录 课程简介Quiz 10: Tuples 单选题&#xff08;1-11&#xff09;编程题Exercise 10.2 课程简介 Python for Everybody 零基础程序设计&#xff08;Python 入门&#xff09; This course aims to teach everyone the basics of programming computers using Python. 本课…

【软件测试】Java+selenium环境搭建

目录 1.下载Chrome浏览器&#xff0c;查看浏览器的版本 2.根据浏览器版本下载驱动 根据电脑版本下载驱动&#xff1a; 3.去maven仓库寻找selenium驱动 4.在idea中创建一个项目 1.在pom.xml中添加依赖 2.点击右侧刷新按钮 3.在Java下创建一个类Main 4.将以下代码写入 5.…

B061-ES6 NodeJS npm Vue

目录 ECMAScript6什么是ECMAScriptECMAScript历史语法申明变量解构表达式箭头函数模块化 npm引出nodejs安装VUEvue简介配置Terminalvue入门vue属性-elvue属性-datavue属性-methods vue架构认识vue表达式vue-表达式-基础vue-表达式-操作对象&数组 vue-指令v-text & v-ht…

软件工程师,入门下深度学习吧

概述 ChatGPT,英文全称为Chat Generative Pre-trained Transformer,是OpenAI研发的聊天机器人程序。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流。除此之外,还能进行…

kettle架构图

2、架构说明 1&#xff09;最底层的是kettle的核心引擎层&#xff0c;相关的jar在lib目录下。 2&#xff09;中间是开发层&#xff0c;在开发阶段我们接触最多的就是通过spoon进行开发&#xff0c;通过Spoon.bat或者spoon.sh即可启动客户端&#xff0c;开发文件调试之前要先保…

使用vtk创建立方体,设置顶点为不同颜色

引言 改示例为官网上的例子。创建了一个顶点是不同颜色的立方体。 示例 开发环境 使用QtCreator4.11.2,Qt5.14.2。使用的vtk9.2的库及其头文件。创建空项目。 示例代码 其pro文件中的内容&#xff1a; QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgets…

【半监督图像分类 ICLR 2023】FreeMatch

【半监督图像分类 ICLR 2023】FreeMatch 论文题目&#xff1a;FREEMATCH: SELF-ADAPTIVE THRESHOLDING FOR SEMI-SUPERVISED LEARNING 中文题目&#xff1a;Freematch&#xff1a;用于半监督学习的自适应阈值 论文链接&#xff1a;https://arxiv.org/abs/2205.07246 论文代码&a…

数字经济下的架构新图景—2023架构·可持续未来峰会(北京主会场)成功举办!

2023 年 6 月 29日&#xff0c;由The Open Group主办的2023架构可持续未来峰会&#xff08;北京主会场&#xff09;在机械工业出版社圆满落幕。 本次大会以“可持续未来”为主题&#xff0c;采取13&#xff0c;即北京主会场上海/成都/深圳三个城市峰会场模式&#xff0c;聚焦架…

android h5 宿舍报修管理系统myeclipse开发mysql数据库编程服务端java计算机程序设计

一、源码特点 android h5 宿舍报修管理系统是一套完善的WEBandroid设计系统&#xff0c;对理解JSP java&#xff0c;安卓app编程开发语言有帮助&#xff08;系统采用web服务端APP端 综合模式进行设计开发&#xff09;&#xff0c;系统具有完整的 源代码和数据库&#xff0c;系…