2017-02-02 11 views
2

Я хочу построить m*n матрицу, каждый элемент которого является rgb тройным, как в следующем Gnuplot фрагмент кода (RGB матрицы 3*3):Как построить матрицу с изображением rgb?

$cross << EODcross 
255 0 0 0 0 0 255 0 0 
0 0 0 0 0 0 0 0 0 
255 0 0 0 0 0 255 0 0 
EODcross 

Черный крест на красном фоне. При необходимости я могу изменить разделители между столбцами и цветовыми компонентами.

Могу ли я достичь желаемого исключения set palette rgbformulae i,j,k и непосредственно с использованием данных $cross? Что-то вроде:

plot '$cross' matrix with image rgb 

Если нет, то я могу передать 24-битные целые числа ширины (конечно, в текстовом представлении, т.е. предварительно вычислен и преобразовано в текст r + 256 * (g + 256 * b) или b + 256 * (g + 256 * r) значения). Как должен i,j,k тройной выглядит правильно отображать rgb значение, представленное в указанной форме, в цветовое пространство палитры?

ответ

2

Стиль rgbimage зарисовки ожидает пять столбцов, последние три дают красные, синие и зеленые значения в диапазоне [0: 255]. Таким образом, вы можете использовать любое 24-битное целое представление цвета, потому что вы должны извлечь цветовые каналы самого при печати:

$data <<EOD 
0xff 0 0xff00 
0  0 0 
0xffff 0 0xff00ff 
EOD 
r(x) = int(x) >> 16 
g(x) = (int(x) >> 8) & 0xff 
b(x) = int(x) & 0xff 
plot $data matrix using 1:2:(r($3)):(g($3)):(b($3)) with rgbimage 

enter image description here

+0

Что означает первые два? – Orient

+1

1 и 2 - координаты x и y. При использовании 'matrix', gnuplot внутренне генерирует три столбца: первый - это столбец матрицы, второй - строка матрицы, а третий содержит фактические значения данных матрицы – Christoph

1

Кажется, что данные матрицы ascii и rgbimage не подходят друг другу.

Если вы можете форматировать исходные данные, а затем положить каждый столбец изображения в единый блок, разделяющий блоки двумя пустыми строками, как это:

$cross << EODcross 
255 0 0 
    0 0 0 
255 0 0 


0 0 0  
0 0 0  
0 0 0 


255 0 0 
    0 0 0 
255 0 0 
EODcross 

Затем сюжет крест, как это:

plot $cross using -2:0:1:2:3 with rgbimage 

число -2 и 0 в разделе using соответствуют псевдо столбцам «блок индекс» и «линия в пределах блока», соответственно. Они используются как значения x и y. Стиль plot with rgbimage требует данных x,y,r,g,b.

Это результат:

black cross

 Смежные вопросы

  • Нет связанных вопросов^_^