Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2012, 23:17   #1
Muvvka
Пользователь
 
Аватар для Muvvka
 
Регистрация: 27.04.2012
Сообщений: 18
По умолчанию Проблема с массивом

Привет, значит хочу сделать на С++ некое подобие поиска изображения есть массив и функция достающая и записывающая в файл цвета пикселей в HEX для наглядности:
Код:
AnsiString ImgToHex(char* ImgName, char* TxtName, int bufer, int chotchik, int chotchik3, int position)
{
FILE *fp;
FILE *f1;
chotchik3=0;
chotchik= 0;
if((fp=fopen(ImgName, "rb+")) == NULL)
{
   exit(1);
}
 f1= fopen (TxtName,"w");
 do {
     bufer= fgetc (fp);
     if(chotchik>position){

     if (bufer!=EOF) {
      fprintf (f1, "%-0.2x", bufer, ' ');
     }
     chotchik3++;
     if (!(chotchik3%3))
      fputc (10, f1);
     }
     chotchik++;
    }
    while (bufer!= EOF);
    fseek (f1, 1, SEEK_CUR);
    fscanf (f1, "%x", &bufer);
    fclose (f1);
    if (fp) {fclose (fp);}

return 0;
}
значит а проблема у меня вот в чом! подскажите как можно было бы приспособить так чтобы мне эта функция писала цвета пикселей в массив так как она пишет цвета в файл ?
например вот пример из файла :
Цитата:
99ccff
99ccff
cc0033
ff00ff
ff00ff
ff00ff
а вот как мне надо чтоб был массив
Цитата:
m[0]=99ccff
m[1]=99ccff
m[2]=cc0033
ну и так далее
ПС: я именно на билдере это пишу...

Последний раз редактировалось Stilet; 26.07.2012 в 21:08. Причина: 0 ответов и новая проблема
Muvvka вне форума Ответить с цитированием
Старый 26.07.2012, 09:54   #2
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Вообще-то экран - это уже и есть массив, левый верхний угол с координатами x = 0, y = 0. Есть свойство у формы или имейджа Canvas->Pixels[x][y], возвращающее цвет. Создайте двумерный массив и записывайте туда значения этого свойства.
Drugnir вне форума Ответить с цитированием
Старый 26.07.2012, 21:41   #3
Muvvka
Пользователь
 
Аватар для Muvvka
 
Регистрация: 27.04.2012
Сообщений: 18
По умолчанию

Цитата:
Есть свойство у формы или имейджа Canvas->Pixels[x][y]
ну мне надо именно в массив записать так как написано выше мною)
Код:
 int array[width][heidth ]=Image->Canvas->Pixels[x][y];
вроде этого?
Muvvka вне форума Ответить с цитированием
Старый 29.07.2012, 04:23   #4
Muvvka
Пользователь
 
Аватар для Muvvka
 
Регистрация: 27.04.2012
Сообщений: 18
По умолчанию

ЫЫЫЫ
Код:
#include <cstdlib>
#include <iostream>
const int MaxPixelNum=3000000;
const int MinPixelNum=1000000;
int MassivColorRGB[MaxPixelNum];
int MassivMinimapa[MinPixelNum];
AnsiString ImgToArray(char* ImgName, int bufer, int chotchik1, int chotchik2, int chotchik3, int position)
{
double shetalka=0;
FILE *fp;
int ControlR=0;
int ControlG=0;
int ControlB=0;
int NowShetaem=0;
if((fp=fopen(ImgName, "rb+")) == NULL)
{
   exit(1);
}
 do {
 bufer = fgetc (fp);
     if(chotchik1>position){
     MassivColorRGB[chotchik2]=bufer;
        double a=shetalka;
        double b=3;
        int a2=a/3;
        double c=a/b;
        double d=(double)((int)(c*10000))/10000 - a2;
        if(d==0)
        {
        ControlR=MassivColorRGB[chotchik2];
        }
        if(d==0.3333)
        {
        ControlG=MassivColorRGB[chotchik2]*256;
        }
        if(d==0.6666)
        {
        ControlB=MassivColorRGB[chotchik2]*65536;
        }
     chotchik3++;
     chotchik2++;
     if(shetalka!=NULL&&d==0)
     {
     MassivMinimapa[NowShetaem]=ControlR+ControlG+ControlB;
     NowShetaem++;
     ControlR=0;
     ControlG=0;
     ControlB=0;
     }
    shetalka++;
    }
    chotchik1++;}
    while (bufer!= EOF);
    if (fp) {fclose (fp);}

return 0;
}
void __fastcall TForm1::SpeedButton10Click(TObject *Sender)
{
ImgToArray("1.bmp", 0, 0, 0, 0, 53);
Label12->Caption = (MassivMinimapa[198]);
}
математика она творит чудеса! как видишь я сам допёр что к чему) ещё немного математики "убрать лишнее например переходы на другую строку" и гуд будет идеально... а птом просто выщитывать номер пикселя) ну правдо пока чото с мусором(

Последний раз редактировалось Muvvka; 29.07.2012 в 19:25.
Muvvka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с массивом Тёма_) Visual C++ 9 22.03.2012 00:01
Проблема с массивом... СтуденткаПитер Помощь студентам 3 09.06.2011 00:11
Проблема с массивом @Ivan Общие вопросы C/C++ 2 11.10.2010 11:46
проблема с массивом kommunist Паскаль, Turbo Pascal, PascalABC.NET 7 27.05.2010 19:00
проблема с массивом kommunist Помощь студентам 4 31.10.2007 17:11