• 【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:

     1 #include <iostream>
     2 #include "CImg.h"
     3 
     4 using namespace cimg_library;
     5 using namespace std;
     6 
     7 int main(int argc, char* argv[]) {
     8 
     9     CImg<unsigned char> testImage1("images/image3.bmp");
    10     CImg<unsigned char> testImage2(testImage1.width(), testImage1.height(), 1, 3);
    11     for (int i = 0; i < testImage1.width(); i ++)
    12         for (int j = 0; j < testImage1.height(); j ++)
    13             for (int k = 0; k < 3; k ++)
    14                 testImage2.atXYZC(i, j, 1, k) = testImage1.atXYZC(i, j, 1, k);
    15     testImage2.display("COPY");
    16         return 0;
    17 }
    View Code

       

  • 相关阅读:
    POJ1422 Air Raid 【DAG最小路径覆盖】
    Android studio ElasticDownloadView
    POJ 1753 Flip Game
    Ogre嵌入MFC傻瓜全然教程(三)
    你的水桶有多满
    uva 10581
    map 解析
    In-Out Parameters inout keyword
    Associated Values & enum
    函数式编程 归档
  • 原文地址:https://www.cnblogs.com/cheermyang/p/5274398.html
Copyright © 2020-2023  润新知