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