项目作者: nerososft

项目描述 :
image processing
高级语言: C++
项目地址: git://github.com/nerososft/SimpleIP.git
创建时间: 2017-10-15T11:37:09Z
项目社区:https://github.com/nerososft/SimpleIP

开源协议:

下载


SimpleIP (Simple Image-Processing) 是一个不想用matlab写图像处理作业的学生写的跨平台图像处理框架。

屏幕快照 2017-10-17 下午8.31.29

尚在测试中的即将加入的增强学习部分的 demo

屏幕快照 2017-10-17 下午8.31.29
屏幕快照 2017-10-17 下午8.31.29

尚在调试中的边缘识别

屏幕快照 2017-10-17 下午8.31.29

窗口

1. 新建窗口

  1. OpenIP::Board* board = new OpenIP::Board("MyWindow",640,480,new OpenIP::ColorRGB(255,255,255));

2. 窗口事件绑定

  1. board->setEventHandling();

3. 窗口渲染

  1. board->run();

图片操作

1. 读取png图片为RGB矩阵std::vector<std::vector<ColorRGB*>>

  1. PNGLoader *pngloader = new PNGLoader();
  2. std::vector<std::vector<ColorRGB *>> pixelsMap = pngloader->loadPNG("yz.png");

2.读取图像到PixelMap

  1. PixelMap* pixelMap = new PixelMap(0, 0, width, height, new ColorRGB(255, 255, 255));
  2. pngLoader->loadPNGToPixelMap("yz.png",pixelMap);

3. PixelMap 像素矩阵

  1. PixelMap* pixelmap = new PixelMap(0, 0, this->width / 4, this->height / 2, new ColorRGB(255, 255, 255));

3. PixelMap像素矩阵像素填充

  1. for (int i = 0; i < this->width / 4; i++) {
  2. std::vector<Pixel *> pp;
  3. for (int j = 0; j < this->height / 2; j++) {
  4. pp.push_back(new Pixel(i, j, pixelsMap[j][i]));
  5. }
  6. pixels.push_back(pp);
  7. }
  8. pixelmap->setPixelMap(pixels);

4. PixelMap像素矩阵标准化【根据窗口大小】

  1. pixelmap->normalize(width, height);

图像处理

1. 图像滤波

中值滤波

  1. Fliter* fliter = new Fliter(pixelMap);
  2. pixelMap = fliter->median();

最大值滤波

  1. Fliter* fliter = new Fliter(pixelMap);
  2. pixelMap = fliter->max();

最小值滤波

  1. Fliter* fliter = new Fliter(pixelMap);
  2. pixelMap = fliter->min();

算数均值滤波

  1. Fliter* fliter = new Fliter(pixelMap);
  2. pixelMap = fliter->arithmetic_mean();

几何均值滤波

  1. Fliter* fliter = new Fliter(pixelMap);
  2. pixelMap = fliter->geometric_mean();

谐波均值滤波

  1. Fliter* fliter = new Fliter(pixelMap);
  2. pixelMap = fliter->harmonics();

逆波均值滤波

  1. Fliter* fliter = new Fliter(pixelMap);
  2. pixelMap = fliter->inverse_harmonic();

字体

1. 字体渲染

初始化

  1. Font* font = new Font("default.otf", FONT_MODE::TRANSPARENT,new ColorRGB(255,255,255), new ColorRGB(0,255,0), 500, 500,100, 200);

绘制

  1. font->draw("this is my font");
  2. font->normalize(width,height);

渲染

  1. font->render();