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

Распознавание по цвету (c opencv). Динамические массивы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Компилятор выдал ошибки http://www.cyberforum.ru/cpp-beginners/thread788117.html
При компиляции dev-c++ выдал ошибки: undefined reference to `timeSetEvent@20' undefined reference to `timeKillEvent@4' ld returned 1 exit status Журнал компиляции: Компилятор: Default compiler Выполнение g++.exe... g++.exe "C:\Users\Павел\Desktop\сп.cpp" -o "C:\Users\Павел\Desktop\сп.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" ...
C++ Бинарный файл, содержащий координаты точек плоскости Задача: В бинарном файле задано множество точек на плоскости. Количество элементов исходного файла неизвестно. Подсчитать количество точек, лежащих внутри указанной окружности. Окружность задавать с клавиатуры координатами центра и радиусом. Вывести на экран координаты найденных точек. Мой вопрос состоит в том, как создать бинарный файл? Как там могут быть заданы координаты точек (имеется ввиду,... http://www.cyberforum.ru/cpp-beginners/thread788109.html
Массив символов. (Алгоритм нахождения прямоуг - в) C++
Привет, CyberForum! :) Есть задачка. Там говориться, что массив кодируется символами ( #, +, =, ?) и '.' - это пустые места. Каждый раз массив задается рандомно. И нужно посчитать сколько прямоуг. в массиве. Так вот меня смутило то, как можно написать такой алгоритм, если массив каждый раз разный? Может есть идейки? А то я в тупике :wall: P.S. Готового кода не прошу, просто идейки с...
C++ Файлы и функции
Доброго времени суток. У меня есть следующий код #include <stdio.h> #include <conio.h> #include <iostream> #define size 2 #define buf 256 #define dSize 10 #define NULL 0
C++ from C# to C++ http://www.cyberforum.ru/cpp-beginners/thread788086.html
Собственно сабж. Есть код на шарпе, хотелось бы перевести его на плюсы, но своих мозгов не хватает (или опыта?). using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace aias_lab4 { class Program
C++ Для чего нужен шаблон <typename T> Здравствуйте. template <typename T> T CLAMP(const T& value, const T& low, const T& high) { return (value < low) ? low : ((value > high) ? high : value); } Из книги я понял,что это шаблон,но для чего,я так и не смог разобрать,подскажите пожалуйста. подробнее

Показать сообщение отдельно
Jack_
0 / 0 / 0
Регистрация: 17.02.2013
Сообщений: 5
17.02.2013, 12:00     Распознавание по цвету (c opencv). Динамические массивы
Здравствуйте, форумчане
Задача стоит следующая - распознавать оранжевый прямоугольник и заносить его координаты в массивы.
Компилятор не выдаёт ошибок, но исполняемая программа упорно вылетает в моменте помещения данных в массивы.
"Необработанное исключение в "0x775ae6c3" в "test1.exe": 0xC0000374: Куча была повреждена."
Так же, мне было бы приятно выслушать критику по поводу общего исполнения программы, ибо всё очень криво, как я понимаю (забросил си на 4 года, а теперь вот понадобилось).

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 "stdafx.h"
 
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
 
using namespace std;
 
void main()
{
    IplImage* src=cvLoadImage("D:\\3.jpg",1);
    
    int i=0;
    int *Xf, *Yf;
 
    int nChan = src->nChannels;  // Определить количество каналов, 
                                    //чтобы реализация не зависела от пользователя
 
    if(src==NULL){ // Если вдруг такой картинки нет
        printf("File does not exist");
        cvWaitKey();
        exit(0);
    }
 
    cvNamedWindow("In", CV_WINDOW_AUTOSIZE ); 
    cvShowImage("In",src);
 
    cvCvtColor(src,src,CV_BGR2HSV); //преобразуем картинку из стандартного BGR
                                //в HSV чтобы легче ловить оранжевый
    
    Xf = new int [src->width];
    Yf = new int [src->height]; //Выделяем динамически, потому что иначе никак
 
    // пробегаемся по всем пикселям изображения
        for( int y=0; y<src->height; y++ )
        {
 
                uchar* ptr = (uchar*) (src->imageData) + y * src->widthStep;  
                //uchar* ptrfind = (uchar*) (dst->imageData) + y * dst->widthStep;
                // указатель на y-ю строчку пикселей изображения 
 
                for( int x=0; x<src->width; x++ ) 
                {
                         // пробегаемся по всем каналам каждого пикселя
 
                if( (ptr[nChan*x+2]>80)                           //V?  R
                    &&(ptr[nChan*x+1]>60)                        //S?   G
                    && (ptr[nChan*x]>10) && (ptr[nChan*x]<38) ) //H?    B
                    {
                        Xf[i] = x;  //копируем координаты в другие массивы
                        Yf[i] = y;
                        i++;
                    }
                
                }
        }
 
for (int a=0; a<src->width; a++)  cout<<Xf[a]<<"_";
cout<<Xf[5]<<endl;
for (int a=0; a<src->height; a++) cout<<Yf[a]<<"_";
 
    cvWaitKey();
    cvDestroyWindow( "In" );
    
    delete [] Xf;
    delete [] Yf;
 
}
Добавлено через 2 часа 50 минут
Упс, нашел ошибку сам. Динамические массивы должны быть размерности
C++
1
src->width * src->height
, а то вдруг прямоугольник на весь экран
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru