继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 ;
}

   

【CImg】基本像素操作的更多相关文章

  1. canvas像素操作

    像素操作 相关方法:getImageData(x,y,w,h);  putImageData(oImg,x,y);  createImageData(w,h); 1.getImageData(x,y, ...

  2. HTML5 canvas图像绘制方法与像素操作属性和方法

    图像绘制方法 drawImage()        向画布上绘制图像.画布或视频 像素操作属性和方法 width                                返回 ImageData ...

  3. Android Bitmap 载入与像素操作

    Android Bitmap 载入与像素操作 一:载入与像素读写 在Android SDK中,图像的像素读写能够通过getPixel与setPixel两个Bitmap的API实现. Bitmap AP ...

  4. HTML5_canvas_像素操作_图片马赛克_图片反相

    canvas 像素操作 像素,即像素点,一个像素只有一个颜色 100*100 的 px 的屏幕区域有 100*100*4 个像素点,即 width*height*4 rgba(0, 0, 0, 1); ...

  5. Opencv中图像的遍历与像素操作

    Opencv中图像的遍历与像素操作 OpenCV中表示图像的数据结构是cv::Mat,Mat对象本质上是一个由数值组成的矩阵.矩阵的每一个元素代表一个像素,对于灰度图像,像素是由8位无符号数来表示(0 ...

  6. opencv中对图像的像素操作

    1.对灰度图像的像素操作: #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using ...

  7. OpenCV基础篇之像素操作对照度调节

    程序及分析 /* * FileName : contrast.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Tue 29 ...

  8. canvas上的像素操作(图像复制,细调)

    canvas上的像素操作(图像复制,细调) 总结 1.操作对象:ImageData 对象,其实是canvas的像素点集合 2.主要操作: var obj=ctx.getImageData(0,0,10 ...

  9. OpenCV像素操作和图形绘制

    像素操作 #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespac ...

随机推荐

  1. AE After Effect 如何分段渲染

    如果只要第一段的话,你把要输出的那段首尾处分别按下B键和N键,这样输出时就会只输出这一段了(拖动首尾的栏目修改起始和终止的时间):如果是批量渲染的话你只要在这些不同的合成层里,每个按下ctrl+M键, ...

  2. js逻辑执行判断

    两个变量或者函数,如果与的关系,a && b,如果a是真则在运行b,如果a是假则不运行b了:如果是或的关系,前者是真则不运行后边的了,否则反过来. 举个例子: <span cla ...

  3. 推荐IOS开发3个工具:Homebrew、TestFight、Crashlytics-b

    1. Homebrew 什么是Homebrew? Homebrew is the easiest and most flexible way to install the UNIX tools App ...

  4. Cannot change version of project facet Dynamic Web Module to 3.1 (Eclipse Maven唯一解决方式)

    If you want to use version 3.1 you need to use the following schema: http://xmlns.jcp.org/xml/ns/jav ...

  5. NDK开发,没有你想象的那么难

    NDK:Native Development Kit原生开发工具 NDK能干什么:NDK使得在android中,java能够调用C函数库. 为什么要用NDK:我们都知道.java是半解释型语言,非常e ...

  6. 2016/1/14 java随机数生成

    1.Math库里的static(静态)方法random() 该方法的作用是产生0到1之间(包括0,但不包括1)的一个double值. double rand = Math.random(); 2.通过 ...

  7. 【bzoj3124】[Sdoi2013]直径

    1.求树的直径: 先随便取一个点,一遍dfs找到离它最远的点l1,再以l1为起点做一遍dfs,找到离l1最远的点l2   那么l1到l2的距离即为直径   2. 求出有多少条边在这棵树的所有直径上:  ...

  8. 在linux上处理base64加密和解密

    http://snailwarrior.blog.51cto.com/680306/142472/ 2.从标准输入读取文件内容,base64编码并打印到标准输出 [root@localhost tes ...

  9. zabbix 监控zookeeper

    1.监控脚本如下:check_zookeeper.sh 1 2 #!/bin/bash echo mntr | nc 127.0.0.1 2182 | grep "$1" |awk ...

  10. Lexer and parser generators (ocamllex, ocamlyacc)

    Chapter 12 Lexer and parser generators (ocamllex, ocamlyacc) This chapter describes two program gene ...