crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Заполнение ОЗУ
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
RazrFalcon Дата 6.12.2010, 17:45
 
Цитата(xls @ 6.12.2010, 16:21) *
Так вот эту память надо бы вернуть системе после использования. Эту функцию писали сами или она из какого-то инструментария. Обычно либо есть парная функция unloadImage, либо функция освобождения памяти либо указано, что можно освободить память стандартным delete.

Чет не подумал, посмотрел api reference, а там есть cvReleaseImage(&img);. Все, теперь оперативка стабильна. Спасибо.
PS инструментарий opencv
xls Дата 6.12.2010, 17:21
  Так вот эту память надо бы вернуть системе после использования. Эту функцию писали сами или она из какого-то инструментария. Обычно либо есть парная функция unloadImage, либо функция освобождения памяти либо указано, что можно освободить память стандартным delete.
RazrFalcon Дата 6.12.2010, 17:17
 
Цитата(xls @ 6.12.2010, 15:46) *
А где в систему возвращается память , выделенная в cvLoadImage ?

:blink:
без понятия :mellow:
xls Дата 6.12.2010, 16:46
  А где в систему возвращается память , выделенная в cvLoadImage ?
RazrFalcon Дата 6.12.2010, 16:26
  Во время работы проги, по 20-30Мб в секунду забиваться оперативка, а потом вешается система.
Идет обработка сотен изображений.
Вот кусок кода:
Раскрывающийся текст
int main()  
{
IplImage *img1, *img2;
IpVec ipts1, ipts2;
IpPairVec matches;
int img_num1=1, img_num2=1, num=10, bmax=0;
QString temps,temps2;
for (int i=0; i<252; i++)
  {
      temps = "../image_compare/img/after/images"+QString::number(img_num1).rightJustified(4, '0')+".png";
      img1 = cvLoadImage(QString(temps).toAscii());
      surfDetDes(img1,ipts1,false,4,4,2,0.0001f);
      for (int j=0; j<359; j++)
      {
          gettimeofday(&start, NULL);
          temps = "../image_compare/img/before/images"+QString::number(img_num2).rightJustified(4, '0')+".png";
          img2 = cvLoadImage(QString(temps).toAscii());
          surfDetDes(img2,ipts2,false,4,4,2,0.0001f);
          getMatches(ipts1,ipts2,matches);
          if (matches.size() >= bmax)
          {
              bmax=matches.size();
              temps2=QString::number(img_num2);
              qDebug()<<img_num2;
          }
          img_num2++;
          ipts2.clear();
          matches.clear();
          gettimeofday(&stop, NULL);
          qDebug()<<"Afterimage:"<<img_num1<<"&"<<"Beforeimage:"<<img_num2<<"="<<matches.size()<<"time="<< ((double)stop.tv_sec + (double)stop.tv_usec/(1000*1000)) - ((double)start.tv_sec + (double)start.tv_usec/(1000*1000));
      }
      qDebug()<<temps2;
      ipts1.clear();
      matches.clear();
      img_num1++;
      img_num2=1;
  }
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 0:44