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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mago
Сообщений: n/a
#1

Работа с изображением - C++

11.12.2012, 02:07. Просмотров 619. Ответов 10
Метки нет (Все метки)

Нужна подсказка о том, как попиксельно можно работать с изображением (псевдобинарным, т.е. каждый пиксель 255 и 0). Нужна возможность "бегать" по изображению, проверяя значения яркости пикселей, и в зависимости от этого выполнять какие-то функции или менять яркость на противоположную. Если не сложно, кусочек простейшего кода, который покажет, как возможно загружать изображение и как обращаться к пикселям.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2012, 02:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с изображением (C++):

работа с изображением - C++
Всем Привет. Думаю что вопрос не совсем в том разделе, но лучше не нашел. Думаю вы знаете что допустим если открыть в фотошопе фотку,...

Работа с изображением - C++
Всем доброго времени суток, подскажите есть ли в с++ методы, которые изображение представляют, как двумерный массив? Добавлено через...

Работа с bmp изображением - C++
Всем привет! Интересует вопрос:Каким образом можно считать bmp изображение в матрицу, изменить его(аля инстаграмм), а затем сохранить в...

Программа с изображением - C++
Задача состоит в том, что пользователь решает легкий пример: 2+2= 4 - значит открывается 4 квадрат по счету. Для каждого из 4 квадратов в...

Инициализация массива изображением - C++
Какие есть способы инициализировать массив с помощью изображения? Например цветом или яркостью. Есть ли способ сделать это без...

Получение инфы. из файла с изображением - C++
Здравствуйте,ув. форумчане=) Помогите пожалуйста) Нужно получить некоторые данные из файла формата bmp а именно ширину,высоту,и...

10
fair7
9 / 9 / 0
Регистрация: 31.12.2010
Сообщений: 81
Записей в блоге: 1
10.06.2014, 21:03 #2
B Dev C++ тоже пойдёт, только нужно "доработать напильником".
Переведи рисунок в чёрно белый. Как переводить я не пробовал, можешь попробовать усреднить значение по цветам и с двинуть оператором ">>" чтобы осталось 8 бит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _WIN32_WINNT 0x0501
//#include "stdafx.h"
#include <windows.h>
#include <wincon.h>
 
int main()
{
    system("pause");
    HWND hWnd = GetConsoleWindow();
    HDC hDc = GetDC(hWnd);
    SetPixel(hDc, 100, 100, 0x00ffff);
    for(int r=192;r-=8;)
        for(int x=600;x-=2;)
            for(int y=800;y-=8;)
            {
        SetPixel(hDc, x,y,RGB(255-r,x,y));
    }
    system("cls");
    system("pause");
    ReleaseDC(hWnd, hDc);
    return 0;   
}
0
Миниатюры
Работа с изображением  
fair7
9 / 9 / 0
Регистрация: 31.12.2010
Сообщений: 81
Записей в блоге: 1
10.06.2014, 21:09 #3
А если бинарный - ещё з двинь ">>" , чтобы осталось 1 бит.
если HEKOTOPOE4UC7O<<=7; то и будет, либо 0 либо 255.
0
iRomul
159 / 100 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
10.06.2014, 21:12 #4
Проще через OpenCV. Инструкция здесь. Можно обращаться как к одноканальным, так и к многоканальным изображениям.
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
10.06.2014, 21:20 #5
Цитата Сообщение от fair7 Посмотреть сообщение
Как переводить я не пробовал, можешь попробовать усреднить значение по цветам и с двинуть оператором ">>" чтобы осталось 8 бит.
Формула перевода
Y=0.3R+0.59G+0.11B
0
fair7
9 / 9 / 0
Регистрация: 31.12.2010
Сообщений: 81
Записей в блоге: 1
11.06.2014, 23:46 #6
Прошу прощения за
Цитата Сообщение от fair7 Посмотреть сообщение
если HEKOTOPOE4UC7O<<=7; то и будет, либо 0 либо 255
будет 128 а не 255
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
12.06.2014, 07:12 #7
Цитата Сообщение от fair7 Посмотреть сообщение
если HEKOTOPOE4UC7O<<=7; то и будет, либо 0 либо 255.
можно сделать из 1 255 несколькими способами
0-x
0-0=0
0-1=-1(0x1111 1111)

x=~x;
x+1;
~0=0x1111 11111
+1=0x0000 0000

~1= 0x1111 1110
+1= 0x1111 1111


x-1;
x=~x;

0-1=0x1111 1111
~ =0

1-1=0
~ 0x1111 1111
0
fair7
9 / 9 / 0
Регистрация: 31.12.2010
Сообщений: 81
Записей в блоге: 1
12.06.2014, 21:15 #8
А работающий пример можно, а то что-то не понятно
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
12.06.2014, 21:25 #9
C
1
2
3
char ValPixel=1;
 
R=G=B=0-ValPixel;
0
fair7
9 / 9 / 0
Регистрация: 31.12.2010
Сообщений: 81
Записей в блоге: 1
15.06.2014, 01:48 #10
Да нет же, вот это не понятно:
Цитата Сообщение от ValeryS Посмотреть сообщение
можно сделать из 1 255 несколькими способами
0-x
0-0=0
0-1=-1(0x1111 1111)
x=~x;
x+1;
~0=0x1111 11111
+1=0x0000 0000
~1= 0x1111 1110
+1= 0x1111 1111
x-1;
x=~x;
0-1=0x1111 1111
~ =0
1-1=0
~ 0x1111 1111
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
15.06.2014, 06:14 #11
что не понятно?
у тебя хранится где то изображение в виде массива элементы изображения 0 или 1
нужно когда выводишь изображение на экран было если 0 то RGB {0, 0, 0} b или если 1 то RGB{255,255,255}
я тебе показал как 0 и 1 сделать RGB
забыл самое очевидное
x*255

Добавлено через 4 минуты
А, кажется понял

Цитата Сообщение от ValeryS Посмотреть сообщение
x=~x;
x+1;
~0=0x1111 11111
+1=0x0000 0000
действительно из 0 никак не будет шестнадцатеричного 0x1111 11111
мой косяк
Я двоичное значение написал как шестнадцатеричное нужно читать так

x+1;
~0=1111 11111b
+1=0000 0000b
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2014, 06:14
Привет! Вот еще темы с ответами:

Захват изображения компьютера и сравнение с другим изображением - C++
Добрый день, дамы и господа. Итак, суть задачи: прога должна коим-то образом сканировать определенную область изображения того, что...

Содержит ли текст слова, являющиеся изображением восьмеричных чисел - C++
Здравствуйте, нужна ваша помощь. Пользователь с клавиатуры вводит текст, будь то слово или предложение, программа должна ответить есть ли в...

Очистка Canvas с изображением - C++
Доброго времени суток, друзья! Подскажите новичку, как мне очистить канву если на image у меня лежит рисунок. Я загружаю картинку, на ней...

Тулбар для IE, кнопки с изображением разного размера - C++
Доброго времени суток, у меня возникла проблема которую я безуспешно пытаюсь решить. Все наверное видели тулбар для ИЕ где на кнопках...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
15.06.2014, 06:14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru