我在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。
答案 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));