Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Преобразование картинки в одномерный массив  [new]
balbes0
Guest
В TImage загружена картинка (pf24bit).
размер картинки 20x30.
Каким образом можно представить эту картинку одномерным массивом в 600 (20*30) элементов?
Каждый элемент должен отображать код цвета в виде числа (насколько я знаю можно представить от 0 до 16777215).
Надеюсь на вашу помощь (гугл не подсказал толком).
7 янв 11, 12:00    [10039773]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6889
проходишь циклом по Image.Picture.Bitmap.Pixels[] и записываешь в массив
7 янв 11, 12:04    [10039781]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
balbes0
Guest
Кроик Семён
проходишь циклом по Image.Picture.Bitmap.Pixels[] и записываешь в массив

Там ведь будет не числовой тип, а TColor вроде.
Image.Picture.Bitmap.Pixels[] я слышал медленно работает.
7 янв 11, 12:12    [10039790]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Число и код числа, это одно и тоже.
7 янв 11, 12:21    [10039801]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
balbes0
Guest
Присваивает без ошибки вроде.. хорошо.
А смотрите. 0 - черный, 16777215 - белый. Протестировал - так и показывает.
Беру красный пиксель - он показывает 255.
Он так близко к черному? Там переход цвета от темного к яркому не плавно идёт, а в разброс получается?
7 янв 11, 12:25    [10039812]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908

О да, семь близко к пяти.

Posted via ActualForum NNTP Server 1.4

7 янв 11, 12:27    [10039815]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
balbes0
Guest
Ну ведь близко к черному всё равно! 255 намного меньше 16777215, то есть от черного совсем немного отошли.
Взял розовый пиксель - 8388863.
Существует ли какой то тип кодирования цвета, который присваивает коды более правильно, в том плане то похоже цвета стоят рядом?
7 янв 11, 12:31    [10039826]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6889
balbes0,

все дело в волшебных пузырьках (RGB-представлении цвета в integer)
7 янв 11, 12:33    [10039832]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
balbes0
Guest
Кроик Семён
balbes0,

все дело в волшебных пузырьках (RGB-представлении цвета в integer)


То есть, лучше будет брать три составляющих, и например, сложить их?
7 янв 11, 12:37    [10039838]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
balbes0
Ну ведь близко к черному всё равно! 255 намного меньше 16777215, то есть от черного совсем немного отошли.
Взял розовый пиксель - 8388863.
Существует ли какой то тип кодирования цвета, который присваивает коды более правильно, в том плане то похоже цвета стоят рядом?

Наоборот, да и отношение это к писелю не имеет, R это не пиксель.
7 янв 11, 12:48    [10039860]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
balbes0
Кроик Семён
balbes0,

все дело в волшебных пузырьках (RGB-представлении цвета в integer)


То есть, лучше будет брать три составляющих, и например, сложить их?

Зачем ты складываешь?
7 янв 11, 12:50    [10039862]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
balbes0
Guest
Угу, складывать тоже нехорошо.. Так а каким образом можно получить коды цветов, чтобы система кодировала цвета исходя из их близости? Или это получается невозможно? Я уже думаю проще приводить картинку к 256 оттенкам от черного к белому, там проще наверное будет, и зависимость наблюдается.
Задача такая и стоит - получить картинку и записывать её в массив, если картинка немного изменится - вновь полученный массив не сильно отличался от старого.
7 янв 11, 13:00    [10039878]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Ты вопрос то точно задать в состоянии?
7 янв 11, 13:05    [10039886]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Картинка уже массив, матрица.
7 янв 11, 13:06    [10039889]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
balbes0
Guest
Anatoly Podgoretsky
Ты вопрос то точно задать в состоянии?

Как можно представить картинку в виде массива так, чтобы массив немного изменённой картинки ненамного отличался от массива исходной. Как я уже понял, цветные картинки для этого не очень годятся (различия в кодах между розовым и красным - большие).
И лучше сравнивать не цветные, а чёрно белые (пиксель кодировать яркостью). Так ведь? Или есть решения с цветом?
7 янв 11, 13:12    [10039899]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Картинка уже массив
7 янв 11, 13:18    [10039904]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
balbes0
Guest
Anatoly Podgoretsky,

Да это то и ежу понятно, но мне нужен одномерный, и чтобы удовлетворял требованиям.
7 янв 11, 13:23    [10039910]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Все статические массивы, а уж тем более картинки в файле или в памяти, одномерные, а двумерные это только представление программиста.
7 янв 11, 13:26    [10039915]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Кузьмин
Member

Откуда:
Сообщений: 158
хочешь перевести в радугу, Ну так переводи немного красного немного Зеленого немного голубого , формулу сам придумаешь?
7 янв 11, 21:50    [10040948]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
лолл
Member

Откуда:
Сообщений: 450
balbes0,

иди изучай как кодируются цвета в битмапе. а когда разберешься, 80% твоих вопросов разом отпадут.
7 янв 11, 22:07    [10040992]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование картинки в одномерный массив  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6889
... а так же ColorToRgb и RgbToColor, если не ошибаюсь
7 янв 11, 22:54    [10041129]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить