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

Матрица скручивания - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread262758.html
Имеется файл с некоторым текстом (совокупность пустых и не пустых строк). Не могу придумать алгоритм, с помощью которого через стандартный поток вывода (stdout) выводит ненулые (непустые) строки. Вся соль в том, чтобы функция была минимальна по размерам, т.е. в ней желательно использование стандартных функций (например библиотек stdio или string). Заранее спасибо.
C++ СД Двунаправленный список Ребят помогите пожалуйста понять что значит сделать двунаправленный список используя обьектно-ориентированное программирование. Хотяб разьясните как это.я так понял это нужно создавать класс а все дискрипторы делать свойствами функции.обьясните пожалуйста как реализовать http://www.cyberforum.ru/cpp-beginners/thread262756.html
C++ Скопировать string из одной строки в другую
надо из одной строки в другую определенное количество символов с определенной позиции Например: #include <string> #include <iostream> using namespace std; int main() { string h = "asfjlj";
Cамоучитель, посоветуйте C++
Посоветуйте книгу какую-нибудь по С++ в среде visual studio для начинающих. для совсем начинающих) ну в общем вот и вся проблема) заранее благодарна!
C++ Builder Ошибка при использовании конструктора http://www.cyberforum.ru/cpp-beginners/thread262741.html
Вот написал часть программы на С++, захотел проверить, но выбило ошибку Unit1.cpp(104): E2294 Structure required on left side of . or .* Я подумал что ето может из-за того что я не использую ->, но дело оказалось не в том, помогите пожалуйста исправить. //--------------------------------------------------------------------------- class Matrix{ float Masiv,Vidpovid; int n; public:...
C++ Дано натуральное число. Найти ближайшее простое число 1. Дано натуральное число. Найти ближайшее простое число. 2. Дано 20 пар однозначных чисел. Первое число каждой пары означает количество забитых мячей в матче, второе - пропущенных в той же игре. Определить общее количество очков, набранных командой. Добавлено через 2 часа 39 минут Помогите! Добавлено через 59 минут :wall: подробнее

Показать сообщение отдельно
Dimon16
14 / 14 / 1
Регистрация: 09.06.2010
Сообщений: 35

Матрица скручивания - C++

23.03.2011, 19:03. Просмотров 676. Ответов 0
Метки (Все метки)

Вот написал код для матрицы скручивания,но он чего-то работает не для всех фильтров :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#pragma once
 
#include "Image.h"
#include "MathHelper.h"
 
 
typedef struct Matrix_3x3
{
    int Mat[3][3];
    int Divisor;
    int Offset;
};
 
void Process_Convolution3x3(IMG * Pic, Matrix_3x3 M)
{
        int TR, TG, TB;
        int R, G, B;
 
        UINT IDX;
 
        for(int Y = 1;Y < Pic -> Height - 1;Y++)
        {
            for(int X = 1;X < Pic -> Width - 1;X++)
            {
                //Обрабатываем квадрат заданый матрицой
                for(int Row = -1;Row < 2;Row++)
                {
                    for(int Item = -1;Item < 2;Item++)
                    {
                        IDX = (((Y + Row) * Pic -> Width) + (X + Item)) * Pic -> BytesPerPixel;
 
                        TR = *(Pic -> Data + IDX + Pic -> R_IDX);
                        TG = *(Pic -> Data + IDX + Pic -> G_IDX);
                        TB = *(Pic -> Data + IDX + Pic -> B_IDX);
 
                        TR *= M.Mat[Item + 1][Row + 1];
                        TG *= M.Mat[Item + 1][Row + 1];
                        TB *= M.Mat[Item + 1][Row + 1];
 
                        R += TR;
                        G += TG;
                        B += TB;
                    }
                }
 
                IDX = (Y * Pic -> Width + X) * Pic -> BytesPerPixel;
 
                R = (R / M.Divisor) + M.Offset;
                G = (G / M.Divisor) + M.Offset;
                B = (B / M.Divisor) + M.Offset;
 
                *(Pic -> Data + IDX + Pic -> R_IDX) = Clamp(R, 0, 255);
                *(Pic -> Data + IDX + Pic -> G_IDX) = Clamp(G, 0, 255);
                *(Pic -> Data + IDX + Pic -> B_IDX) = Clamp(B, 0, 255);
 
                R = 0;
                G = 0;
                B = 0;
            }
        }
}
Объясните пожалуйста в чем тут ошибка?
Работает только для Blur'a и Negativ'a.
Заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru