Ex1:图像读取和显示以及像素操作
1. 读入 1.bmp 文件,并用 CImg.display() 显示。
先传入文件(文件放在项目的当前目录下)生成 CImg 对象:
1 | CImg<unsigned char> img("./1.bmp"); |
然后调用 display 方法即可展示图像:
1 | // 1. 展示图像 |

2. 把图像中白色区域变成红色,黑色区域变成绿色
使用 CImg 库里的 cimg_forXY 遍历一遍整个图像,判断每个像素的 RGB 的值并执行相应的操作即可:
1 | // 2. 把图像中白色区域变成红色,黑色区域变成绿色 |
得到下图结果:

上图可见边界处理得不是很好,调整下参数:
1 | // 2. 把图像中白色区域变成红色,黑色区域变成绿色 |
得到下图结果:

3. 在图上绘制一个等边三角形区域,其中心坐标(50,50),边长为 40,填充颜色为蓝色。
可以使用线性规划的方法来确定三角形的区域,底边为 x 轴,并分别求出两条腰的方程,最后进行坐标变换即可:
1 | // 定义根号3,等边三角形两条边的方程以及距离公式 |
得到下图结果:

4. 在图上绘制一个圆形区域,圆心坐标(50,50),半径为 15,填充颜色为黄色。
确定圆心和半径,判断点到圆心的距离是否大于半径即可:
1 | // 4. 在图上绘制一个圆形区域,圆心坐标(50,50),半径为 15,填充颜色为黄色。 |
得到下图结果:

5. 在图上绘制一条长为 100 的直线段,起点坐标为(0, 0),方向角为 135 度,直线的颜色为绿色。
题意理解为从左上角引一条 45 度角长度为 100 的直线段出来,即令 x 等于 y 即可:
1 | // 5. 在图上绘制一条长为 100 的直线段,起点坐标为(0, 0),方向角为 135 度,直线的颜色为绿色。 |
得到下图结果:

6. 保存操作结果。
确保之前几步操作均在同一个对象中操作,然后调用 img.save() 方法即可:
1 | // 6. 保存操作结果。 |
最后将图像保存在当前目录下的 2.bmp 文件中,图像为:

测试代码
1 |
|