继openCV之后接触的又一个C++视觉库——短小精干的CImg

刚开始接触的时候真的是..几乎无从下手,网上资料比较少,但发现有一篇非常有用的中文手册:http://wenku.baidu.com/link?url=GKEgUZUzabHADgCQG3Dg5NGzaMevXu38vvHF71UB339zZJVLaqYWCrPQfmNV7Y0gYMb340wVNK9fJ7Zu0H54Hchi8UwKI3yCQlCnVcoC8mK

再加上,CImg本身的代码并不是很多,也容易理解,最关键的是,源码里注释写得很明白,所以打开源码,ctrl+F来学习也非常不错。

这里记录一下CImg的一些基本的像素操作

————————————————我是一条分割线—————————————————————

主要是这几个:

(x, y分别表示在横纵轴上的坐标,(0,0)在左上角, z = 1时,表示2D图像, c 表示通道数)

//存取(x, y)处,z通道的值, 若X小于0,则取值为零,若x大于width,则取值width-1处,最后存取(x, y, z, c)的值

T& atX(int x, int y, int z, int c)

//存取(x, y)处,z通道的值  ,防止X、Y超出范围,若是超出范围则取边界值,最后存取(x, y, z, c)的值

T& atXY(int x, int y, intz, int c)  

//存取(x, y)处,z通道的值  ,防止X、Y、Z超出范围,同上     

T& atXYZ(int x, int y, int z, int c)    

//存取(x, y)处,z通道的值  ,防止X、Y、Z、C超出范围, 同上   

T& atXYZC(int x, int y, int z, int c)      

//存取(x, y)处,z通道的值  , 若X超出范围,则返回out_value 

T& atX(int x, int y, int z, int c, const T& out_value)   

//存取(x, y)处,z通道的值  , 若(X超出范围 || y超出范围),则返回out_value   

T& atXY(int x, int y, intz, int c, const T& out_value)       

//存取(x, y)处,z通道的值  ,若(X超出范围 || y超出范围 || z超出范围),则返回out_value

T& atXYZ(int x, int y, int z, int c, const T& out_value)    

//存取(x, y)处,z通道的值  ,若(X超出范围 || y超出范围 || Z超出范围 || C超出范围),则返回out_value   

T& atXYZC(int x, int y, int z, int c, const T& out_value)    

编译指令:

g++ -o test.exe test.cpp -O2 -L/usr/X11R6/lib -lm -lpthread -lX11

运行:

./test.exe

code:

 #include <iostream>
#include "CImg.h" using namespace cimg_library;
using namespace std; int main(int argc, char* argv[]) { CImg<unsigned char> testImage1("images/image3.bmp");
CImg<unsigned char> testImage2(testImage1.width(), testImage1.height(), , );
for (int i = ; i < testImage1.width(); i ++)
for (int j = ; j < testImage1.height(); j ++)
for (int k = ; k < ; k ++)
testImage2.atXYZC(i, j, , k) = testImage1.atXYZC(i, j, , k);
testImage2.display("COPY");
return ;
}

   

最新文章

  1. hadoop2.7之Mapper/reducer源码分析
  2. 背水一战 Windows 10 (26) - XAML: x:DeferLoadStrategy, x:Null
  3. centos7 安装jdk7
  4. libqxt编译
  5. 0525Sprint回顾
  6. MINIX3 系统任务分析
  7. server2008R2服务器开启远程
  8. 判断一个面(Polygon)是不是矩形
  9. Thinkphp入门 四 —布局、缓存、系统变量 (48)
  10. 待机状态下,服务类型 WCDMA Service type in Idle mode
  11. dede首页调用分类信息
  12. 笔记:Maven 插件及配置详解
  13. 调用Kubernetes API操作Kubernetes
  14. [INS-40724] No locally defined network interface matches the SCAN subnet.
  15. 要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10;
  16. uniapp如何将微信小程序API封装为Promise
  17. 杭店 ACM 1864 最大报销额 01背包
  18. MD5加密算法的Java版本
  19. Neo4j使用Cypher查询图形数据
  20. cobbler搭建本地的yum仓库源

热门文章

  1. Cocos2dx使用ios内支付IAP具体流程-白白
  2. VB.NET+三层 机房收费系统之组合查询
  3. CI知识:GitLab
  4. Flask 解析 Web 端 请求 数组
  5. 模式识别之ocr---文字识别Tesseract-OCR 进行文字识别 VS2010
  6. ibatis 取消查询动态列的缓存
  7. Java编程中经常用到代码
  8. CPU卡详解【转】
  9. finger的使用
  10. Swift-AES之加密解密