【CImg】基本像素操作
继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】基本像素操作的更多相关文章
- canvas像素操作
像素操作 相关方法:getImageData(x,y,w,h); putImageData(oImg,x,y); createImageData(w,h); 1.getImageData(x,y, ...
- HTML5 canvas图像绘制方法与像素操作属性和方法
图像绘制方法 drawImage() 向画布上绘制图像.画布或视频 像素操作属性和方法 width 返回 ImageData ...
- Android Bitmap 载入与像素操作
Android Bitmap 载入与像素操作 一:载入与像素读写 在Android SDK中,图像的像素读写能够通过getPixel与setPixel两个Bitmap的API实现. Bitmap AP ...
- HTML5_canvas_像素操作_图片马赛克_图片反相
canvas 像素操作 像素,即像素点,一个像素只有一个颜色 100*100 的 px 的屏幕区域有 100*100*4 个像素点,即 width*height*4 rgba(0, 0, 0, 1); ...
- Opencv中图像的遍历与像素操作
Opencv中图像的遍历与像素操作 OpenCV中表示图像的数据结构是cv::Mat,Mat对象本质上是一个由数值组成的矩阵.矩阵的每一个元素代表一个像素,对于灰度图像,像素是由8位无符号数来表示(0 ...
- opencv中对图像的像素操作
1.对灰度图像的像素操作: #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using ...
- OpenCV基础篇之像素操作对照度调节
程序及分析 /* * FileName : contrast.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Tue 29 ...
- canvas上的像素操作(图像复制,细调)
canvas上的像素操作(图像复制,细调) 总结 1.操作对象:ImageData 对象,其实是canvas的像素点集合 2.主要操作: var obj=ctx.getImageData(0,0,10 ...
- OpenCV像素操作和图形绘制
像素操作 #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespac ...
随机推荐
- P-Called-Party-ID头域
典型的proxy server在路由 INVITE 请求到目标时插入 P-Called-Party-ID 头域.该头域用 porxy 收到请求的 Request-URI 填写. UAS 从几个已注冊的 ...
- Appium、selenium与Robot Framework
Robot Framework + Appium Appium-Python-Client: 与Appium Library和Appium Server的交互Appium Library通过Appii ...
- ubuntu系统下,下载Android源码
博主电脑的Windows的 是用的vmware装的ubuntu kylin.vmware随便找都能找到尽量安装最新版本号的,而unbuntu在官方站点下载即可了,安装vmware的时候建议关闭安全类 ...
- MongoDB 学习笔记一 安装以及基础命令
一.MongoDB安装配置 1.获取最新版本号: wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.2.tgz 2.解压缩就可 ...
- android菜鸟之路-事件分发机制总结(二)
ViewGroup事件分发机制 自己定义一个LinearLayout,ImageView和Button,小二,上代码 <LinearLayout xmlns:android="http ...
- navicat软件设置连接mysql数据库
navicat软件设置连接mysql数据库 适用范围及演示使用工具 适用范围:mysql全部系列(含Linux和Windows系统下的mysql) 演示使用工具:Navicat 8.0 MySQL 演 ...
- ps图片怎样实现渐变
首先我先将一副图片展示给大家: 我所做的效果是想把图片做成渐变.而不改变中间图片的颜色效果. 接下来我来说明一下我的所做思路. 首先将图片中间部分选择出来.然后复制成一个图层. 详细操作是用魔棒进行反 ...
- PHP 给图片加边框
/** * 给图片加边框 by liangjian 2014-06-19 * @param $ImgUrl 图片地址 * @param $SavePath 新图片保存路径 * @param $px 边 ...
- Dll,OCX控件的注册(转)
原文地址:http://home.51.com/heiyijiushi/diary/item/10053693.html C#自动实现Dll(OCX)控件注册的两种方法2012-07-31 21:20 ...
- bzoj 1826 缓存交换
题目大意: 一些数,需要将他们依次取入一个集合中 集合的容量有限 若该数已经在集合中则不用再取 每次取的时候可以将集合中与元素替换为另一个,也可以不换,直接加入前提是不超过集合容量 求最后最小的取数次 ...