Форум программистов, компьютерный форум CyberForum.ru

матрица яркости - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
jacknk88
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 27
04.09.2013, 10:32     матрица яркости #1
с помощью каких функций, методов можно получить значение яркости пикселя или может лучше матрицу яркости пикселей изображения на C++ для черно-белого и цветного изображения?

из цветного можно преобразовать RGB

Y = 0.299*R+0.587*G+0.114*B

но как получить параметры RGB для пикселя не знаю...

getpixel вроде долго работает...его не рекомендуют использовать....может с помощью OpenCV или других библиотек можно получить....
поиски в гугле окончательно запутали меня..помогите, плиз


значения яркости нужны для выполнения различных расчетов, например,

F = I(i+1) - I(i)

I(i) - яркость в i-го пикселя...

а потом уже работать с производными...

читал про оператор Соболя, но он возвращает градиент...этот градиент мне нужно рассчитать немного по другим алгоритмам....поэтому мне и нужно само значение яркости каждого пикселя
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2013, 10:32     матрица яркости
Посмотрите здесь:

Матрица C++
Матрица C++
C++ Матрица
C++ Матрица
матрица C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
04.09.2013, 11:53     матрица яркости #2
смотря какое изображение, где оно находится, на экране или в файле
jacknk88
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 27
04.09.2013, 12:31  [ТС]     матрица яркости #3
Цитата Сообщение от Raali Посмотреть сообщение
смотря какое изображение, где оно находится, на экране или в файле
в файле
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
04.09.2013, 12:32     матрица яркости #4
Цитата Сообщение от jacknk88 Посмотреть сообщение
в файле
А как в файле хранится цвет?
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
04.09.2013, 12:40     матрица яркости #5
Цитата Сообщение от jacknk88 Посмотреть сообщение
в файле
что за файл, какое расширение?
jacknk88
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 27
04.09.2013, 12:47  [ТС]     матрица яркости #6
Цитата Сообщение от Raali Посмотреть сообщение
что за файл, какое расширение?
jpeg

Добавлено через 4 минуты
а что содержит mat
C++
1
cv::Mat mat = cv::imread(filename, CV_LOAD_IMAGE_GRAYSCALE);
или так
C++
1
Mat img = imread("filename.jpg",CV_LOAD_IMAGE_COLOR);
а потом

C++
1
mat.at<unsigned char>(h, w);
к отдельной строчке через

C++
1
mat.ptr(h);
а к массиву данных через

C++
1
mat.data
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
04.09.2013, 13:03     матрица яркости #7
Цитата Сообщение от jacknk88 Посмотреть сообщение
mat.at<unsigned char>(h, w);
а если вывести это значение что показывает?
хотя странно что unsigned char, я ожидал что в матрице будут unsigned int
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
04.09.2013, 13:24     матрица яркости #8
http://opencv.willowgarage.com/docum....html#iplimage Если я правильно понял, в imageData надо лезть.
jacknk88
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 27
09.09.2013, 13:12  [ТС]     матрица яркости #9
может кому еще понадобиться, так что напишу что узнал

Цитата Сообщение от jacknk88 Посмотреть сообщение
а что содержит mat
C++
1
cv::Mat mat = cv::imread(filename, CV_LOAD_IMAGE_GRAYSCALE);
содержит значения яркости (для GRAYSCALE (градации серого) - черно-белого изображения) или (вот это я не проверял) каждый элемент будет содержать значения RGB, точнее BGR (для цветного изображения CV_LOAD_IMAGE_COLOR)....хотя второй параметр, думаю, можно указать также как и при вызове функции cvLoadImage


Для обращения к элементам матрицы, а именно получения значения яркости в диапазоне от 0 до 255 нужно использовать тип unsigned char...и написать что-то вроде этого

C++
1
int I = mat.at<unsigned char>(h, w);
или вернее
C++
1
unsigned char I = mat.at<unsigned char>(h, w);
где I - значение яркости пикселя; h - номер строки пикселя; w - номер столбца пикселя;

вроде можно и к отдельной строчке обратиться через

C++
1
mat.ptr(h);
а к массиву данных через

C++
1
mat.data
всю информацию нашел на форуме

спасибо всем!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2013, 13:41     матрица яркости
Еще ссылки по теме:

Матрица C++
C++ матрица
C++ матрица 8 Х 8

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
jacknk88
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 27
10.09.2013, 13:41  [ТС]     матрица яркости #10
вот еще подробное описание способов обращения к пикселям изображения

PS: только метод, который я использовал там почем-то нету
Yandex
Объявления
10.09.2013, 13:41     матрица яркости
Ответ Создать тему
Опции темы

Текущее время: 00:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru