Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Kirikjah
0 / 0 / 1
Регистрация: 20.05.2013
Сообщений: 13
#1

Работа с картинками с применением openCV (ручной Собель)

23.10.2016, 16:45. Просмотров 297. Ответов 0

Всем доброго времени суток!
Приспичило мне тут на днях разобраться с библиотекой OpenCV под C++. Это в скором времени мне понадобится для написания диплома (тема пока не определена, так что распространяться не буду). Плюсы изучал сам и довольно поверхностно, а в библиотеку так вообще только второй день вникаю, так что просьба камнями не закидывать.
В чем, собственно, суть вопроса. Написал я нечто похожее на программу, которая применяет к картинке оператор выделения границ Собеля (знаю, что в OpenCV эта функция реализована, но мне надо понять, как работать с пикселями изображения да и вообще с изображениями) и теперь хотелось бы узнать, сколько косяков в этом всем я наделал, желательно хотя бы с небольшими объяснениями. Сам оператор применяется не ко всему изображению - остается рамка в 1 px - это так и задумано.
Для того, чтобы разобраться с библиотекой читал статьи на robocraft, хабре и копался в документации (но уровень энглиша довольно слаб, так что не особо много понял). Так что было бы чудесно, если бы кто-нибудь скинул классную инструкцию на русском языке, но это если не лень...
Все действия производятся в MSVS 2015.

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
62
63
64
65
66
67
68
69
70
71
#include <opencv2\opencv.hpp>
using namespace cv;
#include <stdio.h>
using namespace std;
#include <math.h>
 
 
int main(int argc, char* argv[])
{
    // имя картинки задаётся первым параметром
    char* filename = argc >= 2 ? argv[1] : "Valve.png";
 
    // получаем картинку
    Mat image = imread(filename);
    // создаём картинки
    Mat_<uchar> img2;
    Mat_<Vec3b> img3 = image.clone();
    cvtColor(img3, img2, CV_RGB2GRAY);
    Mat_<uchar> img = img2.clone();
 
    // окно для отображения картинки
    imshow("Исход", img3); // вывод цветного изображения
    imshow("Исход2", img2); // вывод чб изображения
 
    //int lenght = image.rows; // число строк
    //int height = image.cols; // число столбцов
 
    // оператор Щарра
    //double GX[3][3] = { { -3, -10, -3 },{ 0, 0, 0 },{ 3, 10, 3 } };
    //double GY[3][3] = { { -3, 0, 3 },{ -10, 0, 10 },{ -3, 0, 3 } };
 
    // оператор Собеля
    double GX1[3][3] = { { 1, 2, 1 },{ 0, 0, 0 },{ -1, -2, -1 } };
    double GY1[3][3] = { { 1, 0, -1 },{ 2, 0, -2 },{ 1, 0, -1 } };
 
    // применение операторов
    for (size_t i = 1; i < image.rows - 1; i++)
    {
        for (size_t j = 1; j < image.cols - 1; j++)
        {
 
            double SumX = 0.0;
            double SumY = 0.0;
            for (int n = -1; n <= 1; n++)
            {
                for (int m = -1; m <= 1; m++)
                {
                    SumX += (double)img2[i + n][j + m] * GX1[m + 1][n + 1];
                    SumX += (double)img2[i + n][j + m] * GY1[m + 1][n + 1];
                }
            }
            double k = sqrt(pow(SumX, 2) + pow(SumY, 2));
            if (k > 255.0)
            {
                k = 255;
            }
            img[i][j] = (int)k;
        }
 
    }
 
 
    imshow("2", img); // вывод результата
 
 
    waitKey(0);
 
    // удаляем окна
    cvDestroyAllWindows();
    return 0;
}
Заранее спасибо за конструктивную критику.
0
Миниатюры
Работа с картинками с применением openCV (ручной Собель)  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2016, 16:45
Ответы с готовыми решениями:

Работа с картинками BMP
Как проверить рисунок типа BMP на количество цветов?

Работа с применением стека
Ломаю голову над алгоритмом для следующей задачи: используя стек, вывести из...

Работа со строками с применением цикла
Не могу справиться с заданием уже не малое количество времени. Хромает...

Работа с библиотеками openCV
Пытаюсь запустить код по распознаванию лиц, использующий библиотеки opencv....

Работа с OpenCV, нахождение параметров обьектов
Здравствуйте, Мне нужно сделать один проект по учебе, речь идет о...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2016, 16:45

Работа с изображением через библиотеку OpenCV
Есть изображение состоящее из множества фигур внутри, определить кротчайшее...

OpenCV для Visual Studio C++ работа с изображениями
Здравствуйте, товарищи программисты. необходимо выполнить задание по...

Работа с картинками!
Всем доброго времени суток!У меня такой вопрос начну с того что javasript знаю...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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