Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
convert input.jpg -colorspace gray gray.jpg
convert input.jpg -sepia-tone 80% sepia.jpgconvert input.jpg -negate negated.jpgconvert input.jpg -brightness-contrast -20% dark.jpg
convert input.jpg -brightness-contrast 20% bright.jpgconvert input.jpg -monochrome -normalize binarize3.jpg
convert input.jpg -remap pattern:gray50 binarize2.jpg
convert input.jpg -colorspace gray +dither -colors 2 binarize1.jpg


#include <QCoreApplication>
#include <QImage>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QImage img("test.jpg");
for (int i = 0; i < img.width(); i++) {
for (int j = 0; j < img.height(); j++) {
QRgb rgb = img.pixel(j, i);
int s = (qRed(rgb) + qGreen(rgb) + qBlue(rgb)) / 3;
img.setPixel(j, i, qRgb(s, s, s));
}
}
img.save("outtest.jpg", "JPEG");
return 0;
}
time ./imagecvt
real 0m0.033s
user 0m0.023s
sys 0m0.010s
image2 = image.colorTransform([[-1, 0, 0, 0, 1],
[0, -1, 0, 0, 1],
[0, 0, -1, 0, 1],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1]]);[[0.299, 0.587, 0.114, 0, 0],
[0.299, 0.587, 0.114, 0, 0],
[0.299, 0.587, 0.114, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1]]from PIL import Image, ImageDraw, ImageMath
def bw1(s):
d = s.copy()
pix = d.load()
draw = ImageDraw.Draw(d)
for i in range(s.size[0]):
for j in range(s.size[1]):
a = pix[i, j][0]
b = pix[i, j][1]
c = pix[i, j][2]
S = (a + b + c) // 3
draw.point((i, j), (S, S, S))
return d
def bw2(s):
r, g, b = s.split()
return ImageMath.eval("convert((r + g + b) / 3, 'L')", r=r, g=g, b=b)
def bw3(s):
return s.convert('L')
s = Image.open('s.jpg')
bw1(s).save('bw1.jpg')
bw2(s).save('bw2.jpg')
bw3(s).save('bw3.jpg')
from timeit import timeit
print 'Per pixel:', timeit(lambda: bw1(s), number=10)
print 'ImageMath:', timeit(lambda: bw2(s), number=10)
print 'Image.convert:', timeit(lambda: bw3(s), number=10)
c = max(c, 0)
c = min(c, 255)
def limit(value, low=0, high=255):
return min(max(value, low), high)
mean = (R + G + B) / 3
R = mean + 46 // если больше 255, то = 255
G = mean
B = mean - 46 // если меньше 0, то = 0

mean = (R + G + B) / 3
factor = rand()%255 + 1 // Случайное число от 1 до 256
Если mean < factor то
result = 0
Иначе
result = 255
R = result
G = result
B = result

Как эффективнее всего переставлять пиксели местами? Хочу написать программу, создающую изображение как результат комплексной функции, взятой от исходного изображения, где горизонтальные координаты пикселей - действительная ось, а вертикальные - мнимая.
if (mode == 2):
goto 100
a = pix[i, j][0]
b = pix[i, j][1]
c = pix[i, j][2]a, b, c = pix[i, j]image2 = Image.open("test.jpg")
pix = image2.load() #Выгружаем значения пикселей.
if (mode == 6):
mul = int(input('Multiple: '))
abc = float(input('Frequency: '))
freq = abc / 1000
for i in range(width):
for j in range(1,height-1):
v = round((mul*math.sin(i*freq)))
m = v + j -mul
if (m > (height-1)):
m = height-1
if (m < 1):
m = 1
a = pix[i,m][0]
b = pix[i,m][1]
c = pix[i,m][2]
draw.point((i,j),(a,b,c))

Играемся с изображениями в Python