C++ 画热力图

void get_point_color(float intensity, int &r, int &g, int &b)
{
	if (intensity < 1)
	{
		r = 0; g = 0; b = 118;
	}
	else if (intensity < 2)
	{
		r = 84; g = 85; b = 166;
	}
	else if (intensity < 3)
	{
		r = 144; g = 155; b = 209;
	}
	else if (intensity < 4)
	{
		r = 174; g = 185; b = 229;
	}
	else if (intensity <5)
	{
		r = 248; g = 187; b = 163;
	}
	else if (intensity < 6)
	{
		r = 226; g = 147; b = 133;
	}
	else if (intensity < 7)
	{
		r = 200; g = 110; b = 105;
	}
	else if (intensity < 8)
	{
		r = 167; g = 47; b = 46;
	}
	else
	{
		r = 110; g = 0; b = 0;
	}
	//r = 255; g = 0; b = 0;
}

void draw_tuli()
{
	cv::Mat dst = cv::Mat(35*9, 40, CV_8UC3, cv::Scalar(255, 255, 255));
	for (int iy = 0; iy < 35 * 9;iy++)
	{
		for (int ix = 0; ix < 40; ix++)
		{
			float height = iy / 35.0;
			if (height > 8) 
			{
				dst.at<cv::Vec3b>(iy, ix)[0] = 118;
				dst.at<cv::Vec3b>(iy, ix)[1] = 0;
				dst.at<cv::Vec3b>(iy, ix)[2] = 0;
			}
			else if (height > 7)
			{
				dst.at<cv::Vec3b>(iy, ix)[0] = 166;
				dst.at<cv::Vec3b>(iy, ix)[1] = 85;
				dst.at<cv::Vec3b>(iy, ix)[2] = 84;
			}
			else if (height > 6)
			{
				dst.at<cv::Vec3b>(iy, ix)[0] = 209;
				dst.at<cv::Vec3b>(iy, ix)[1] = 155;
				dst.at<cv::Vec3b>(iy, ix)[2] = 144;
			}
			else if (height > 5)
			{
				dst.at<cv::Vec3b>(iy, ix)[0] = 229;
				dst.at<cv::Vec3b>(iy, ix)[1] = 185;
				dst.at<cv::Vec3b>(iy, ix)[2] = 174;
			}
			else if (height > 4)
			{
				dst.at<cv::Vec3b>(iy, ix)[0] = 163;
				dst.at<cv::Vec3b>(iy, ix)[1] = 187;
				dst.at<cv::Vec3b>(iy, ix)[2] = 248;
			}
			else if (height > 3)
			{
				dst.at<cv::Vec3b>(iy, ix)[0] = 133;
				dst.at<cv::Vec3b>(iy, ix)[1] = 147;
				dst.at<cv::Vec3b>(iy, ix)[2] = 226;
			}
			else if (height > 2)
			{
				dst.at<cv::Vec3b>(iy, ix)[0] = 105;
				dst.at<cv::Vec3b>(iy, ix)[1] = 110;
				dst.at<cv::Vec3b>(iy, ix)[2] = 200;
			}
			else if (height > 1)
			{
				dst.at<cv::Vec3b>(iy, ix)[0] = 46;
				dst.at<cv::Vec3b>(iy, ix)[1] = 47;
				dst.at<cv::Vec3b>(iy, ix)[2] = 170;
			}
			else
			{
				dst.at<cv::Vec3b>(iy, ix)[0] = 0;
				dst.at<cv::Vec3b>(iy, ix)[1] = 0;
				dst.at<cv::Vec3b>(iy, ix)[2] = 110;
			}
		}
	}
	cv::imwrite("tuli.jpg", dst);
}

cv::Mat mergeImage(cv::Mat image1)
{
	cv::Mat image2 = cv::imread("C:\\Users\\Desktop\\图\\polish\\tuli4.png");
	cv::Mat result, rotate1, rotate2;
	int width = image2.cols;
	int height = image1.rows;
	cv::resize(image2, result, cv::Size(width, height));
	//push_back 方法将图像2拷贝到图像1的最后一行
	cv::rotate(image1, rotate1, cv::ROTATE_90_CLOCKWISE);
	cv::rotate(result, rotate2, cv::ROTATE_90_CLOCKWISE);
	cv::Mat img_merge;
	img_merge.push_back(rotate1);
	img_merge.push_back(rotate2);
	cv::rotate(img_merge, result, cv::ROTATE_90_COUNTERCLOCKWISE);
	return result;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要根据数字热力图C,首先需要理解热力图的概念和表示方式。热力图是通过使用不同颜色来表示不同数值的分布情况,以直观且有视觉冲击力的方式展现数据。其原理是通过将数据映射到颜色空间中的不同颜色来表示不同数值的密度或强度。 在热力图C之前,需要收集相关数据并进行数据处理,以确定需要展示的数值的范围和分布情况。然后,根据数据的范围选择一种适合的颜色映射方案,根据数据的大小和分布合理地设置颜色的渐变程度,确保热力图能够直观地传递数据的含义。 接下来,可以使用各种可视化软件或编程工具来绘制热力图C。根据数据的格式和展示需求,可以选择使用Python中的Matplotlib、Seaborn等库进行编程绘图,或者使用Excel、Tableau等软件进行可视化设计。使用工具时,需要将数据输入到相应的函数或界面中,设定好相关参数,然后生成热力图C。 热力图C的过程需要对数据有一定的了解和处理能力,并对热力图的绘制原理和工具的使用有所掌握。最终的热力图C应该能够直观地展示数据的分布情况和密度强度,帮助观察者更好地理解数据并做出相应的分析和决策。 ### 回答2: 热力图是一种可视化数据的图表,可以展示数据的密度和分布情况。根据数字热力图c需要以下步骤: 1. 首先,确定热力图的坐标轴,可以是二维平面的x和y轴,也可以是其他坐标系,根据数据特点进行选择。 2. 确定每个坐标点的数值数据,这些数值将被用于确定每个点的颜色深浅,反映该点所代表的数据的大小。可以通过不同的符号表示不同的数值,比如颜色深浅或者符号的大小等。 3. 将数据根据数值大小映射到颜色的不同深度上。一般来说,可以将数值较小的点设为浅色,数值较大的点设为深色,以此来表现数据的差异。 4. 根据数据的密度,可以在热力图上进行插值计算,以进一步增加数据点的精确程度。这样做可以使热力图更加平滑和连续,更好地表现数据的细微变化。 5. 最后,用所确定的颜色和插值计算的数据在坐标轴上标出各个点的颜色,将这些点连接起来,就得到了热力图c。 总结起来,根据数字热力图c需要先确定坐标轴,然后确定每个点的数值数据,并将数值数据映射到颜色深度上。接着可以使用插值来增加数据点的精确度。最后,用颜色和数据连接各点,就可以得到热力图c。热力图c可以让我们直观地了解数据的分布情况和密度,帮助我们更好地分析和理解数据。 ### 回答3: 要根据数字热力图C,首先需要明确热力图的定义和基本要素。热力图C是一种用颜色编码来表示数据分布和强度的图像形式。它通过色彩的明暗变化来展示数字之间的差异。 首先,我们需要将数字进行分类或分组,以便理解和描述不同数值之间的关系。可以根据数据的范围和分布特点,将其分为几个具有代表性的区间。例如,可以将数据分为低、中、高三个区间。 其次,需要选择一种适合的颜色编码方案。一般来说,较低的数值可以用淡色,较高的数值可以用深色。可以使用渐变色或者色尺来表示数值的大小区分。另外,还可以选择不同的颜色来表示不同的数据区间,以增加图像的可读性。 最后,根据数据和所选择的颜色编码方案,使用相应的绘图工具制作热力图C。根据数据的分布情况,在图像中按照不同的辐射或点阵形式,使用不同的颜色填充每个数据点或像素点。 在绘制过程中,要注意图像的清晰度和可读性。可以使用坐标轴和标签来标明数据的含义和数值范围,以提高热力图的理解和解读。 总之,要根据数字热力图C,需要将数据进行分类或分组,选择适合的颜色编码方案,并使用相应的绘图工具制作热力图热力图C可以直观地展示数据分布和强度,帮助我们更好地理解和分析数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AICVer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值