图像文件到CImg的像素矢量?

时间:2014-05-17 22:15:30

标签: python c++ image image-processing numpy

我在python中有这个:

import Image
import numpy as np
import random

img = Image.open('img.jpg')

#turn img to list of rgb tuples and scramble 
pixels = list(img.getdata())
pixels.reverse()
random.shuffle(pixels)

#make new image using scrambled pixels
img2 = Image.new(img.mode, img.size)
img2.putdata(pixels)

img2.save('newimg.png')

我认为我应该在c ++中工作,以保持我上学期学到的东西在我的头脑中新鲜,并为我下学期的课程做准备,这个课程也围绕着c ++。所以,我找到了CImg,并且文档中有点不知所措。那么,什么是CImg相当于第8行?

我的最终目标是能够使用已知模式对图像进行加扰,然后使用该模式进行解密。我不知道这是否可行。对我来说有点像询问以下内容:

下式给出:

srand(x);
int rand_num = rand() % 10;

和     rand_num = 7

找到x。

1 个答案:

答案 0 :(得分:1)

据我所知CImg提供iterators循环遍历每个像素。因此,如果您的编译器支持C ++ 11,您可以使用std::shuffle来混洗图像的像素(参见下面的示例)。

CImg<float> img("lena.jpg"); // Load image from file.
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::shuffle(img.begin(), img.end(), std::default_random_engine(seed));