Ex1:图像读取和显示以及像素操作

来源:互联网 发布:好看的仙侠言情文 知乎 编辑:程序博客网 时间:2024/06/17 09:47

Ex1:图像读取和显示以及像素操作


1079


输入图像

  1. 读取 1.bmp 文件,并用CImg.display()显示

    pic1
    代码如下:

    ```#include "CImg.h"using namespace cimg_library;int main() {    //读取图片    CImg<unsigned char> img("2.bmp");    //显示图片    img.display("Ex1");    return 0;}```
    1. 把1.bmp文件的白色区域变成红色,黑色区域变成绿色。
      pic2
      代码如下:

      #include "CImg.h"using namespace cimg_library;int main() {    CImg<unsigned char> img("2.bmp");    cimg_forXY(img, x, y) {        if(img(x,y,0) < 200 && img(x,y,1) < 200 && img(x,y,2) < 200) {            img(x,y,0) = 0;            img(x,y,1) = 255;            img(x,y,2) = 0;        }        else if(img(x,y,0) >= 200 && img(x,y,1) >= 200 && img(x,y,2) >= 200) {            img(x,y,0) = 255;            img(x,y,1) = 0;            img(x,y,2) = 0;        }    }    img.display("Ex1");    return 0;}
    2. 在图上绘制一个圆形区域,圆心坐标(50,50),半径为30,填充颜色为蓝色。
      pic3
      代码如下:

      #include "CImg.h"#include <cmath>    using namespace cimg_library;int main() {    CImg<unsigned char> img(200, 200, 1, 3);    img.fill(0);    cimg_forXY(img, x, y) {        //圆心为(50, 50)        double x2 = pow(x-50, 2);        double y2 = pow(y-50, 2);        double distance = sqrt(x2+y2);        if(distance <= 30.0) { // 半径为30            img(x, y, 0) = 0;            img(x, y, 1) = 0;            img(x, y, 2) = 255;        }    }    img.display("Ex1");    return 0;}
    3. 在图上绘制一个圆形区域,圆心坐标(50,50),半径为3,填充颜色为黄色
      pic4
      代码如下:

      #include "CImg.h"#include <cmath>    using namespace cimg_library;int main() {    CImg<unsigned char> img(200, 200, 1, 3);    img.fill(0);    cimg_forXY(img, x, y) {        //圆心为(50, 50)        double x2 = pow(x-50, 2);        double y2 = pow(y-50, 2);        double distance = sqrt(x2+y2);        if(distance <= 3.0) { // 半径为3            img(x, y, 0) = 255;            img(x, y, 1) = 255;            img(x, y, 2) = 0;        }    }    img.display("Ex1");    return 0;}

思考

为什么第四步绘制的圆形区域形状效果不好?

答:因为用到的像素太少,分辨率不高,因此方块感明显,边缘锯齿明显,不圆润,不连续,因此形状不好,对比第三步的半径大小,因为第三步中半径大得多,因此圆形的外缘有更多的像素组成,看起来锯齿没那么明显,方块感也减少,因此方块越密集,给人的视觉效果就越平滑,越连续。

0 0
原创粉丝点击