簡體   English   中英

圖像文件到具有CImg的像素矢量?

[英]Image file to vector of pixels with CImg?

我在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。

據了解, CImg提供了迭代器來遍歷每個像素。 這樣,並假設編譯器支持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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM