@BaffledCook: да, более или менее. используйте `{}' +` не ` {}'\; ` + имеет лучшую оптимизацию... Почему вы настаиваете, чтобы сохранить метку в файл, если имя файла и метки времени? @RenePickhardt я думаю, что Сергей пытается сказать, что почему приверженность операций должен иметь SegWit выход? Эти платные индивидуальные адреса партнеров и txid не ссылается. @TrailRider спасибо большое, но я думаю, это будет отлично, если он может помочь владельцу вопрос. ;) "ценный вклад из немногих экспертов, которые пишут подробные комментарии, вероятно, будет сведен на нет огромное количество неосведомленных избирателей, которые действительно не в состоянии оказать профессиональное мнение". MathOverflow, кажется, есть высокий уровень вопросов и система голосования не представляется избалованы неосведомленных избирателей. Зачем он будет отличаться для "толпы обзор" системы публикации научных статей? Ах, вы правы. Там есть слово терминале В есть, но я пока не уверен, потому что после открытия терминала и разворачивания окна решает эту проблему очень легко.

Я строю свои собственные встроенные ОС Linux для Raspberry ПИ3, используя сборочного окружения. Эта ОС будет использована, чтобы обрабатывать несколько приложений, одно из них выполняет обнаружение объектов по OpenCV (В3.3.0).

Я начал с Raspbian Джесси + Python, но оказалось, что это занимает много времени для выполнения простой пример, поэтому я решил создать мою собственную ОСРВ с оптимизированными функциями + разработки на C++ вместо Python.

Я думал, что с этих оптимизаций 4 ядра ИРЦ + 1 ГБ оперативной памяти будет обрабатывать такие заявки. Проблема в том, что даже с этими вещами, простейших программ компьютерного зрения займет много времени.

ПК и малины ПИ3 больше

Это простая программа, которую я написал, чтобы иметь представление о порядке величины времени выполнения каждой части программы.

#включить заголовочный файл <stdio.ч>
для #Include "opencv2/ядра.ГЭС"
для #Include "opencv2/imgproc.ГЭС"
для #Include "opencv2/highgui.ГЭС"

#включить <время.ч> /* clock_t, часы, CLOCKS_PER_SEC */

используя ЧВ пространства имен;
с помощью пространства имен std;

тап_п()
{
setUseOptimized(истина);
 clock_t t_access, t_proc, t_save, t_total;

 // Времени доступа.
 t_access = часы();
 Img0 мат = imread("img0.jpg", IMREAD_COLOR);// берет ~90МС
 t_access = часы() - t_access;

 // Время обработки 
 t_proc = часы();
 cvtColor(img0, img0, CV_BGR2GRAY); 
 размытость(img0, img0, размер(9,9));// берет ~18 мс
 t_proc = часы() - t_proc;

 // Экономия времени 
 t_save = часы();
 жмурить("img1.jpg", img0);
 t_save = часы() - t_save;

 t_total = t_access + t_proc + t_save;

 //функции printf("CLOCKS_PER_SEC = %д\н\н", CLOCKS_PER_SEC);

 функции printf("(тест 0) Общее время выполнения\т %д циклов \т= %ф МС!\Н", t_total,((поплавка)t_total)*1000./CLOCKS_PER_SEC);
 функции printf("---->> доступ в\т %д циклов \т= %ф МС.\Н", t_access,((поплавка)t_access)*1000./CLOCKS_PER_SEC);
 функции printf("---->> обработка в\т %д циклов \т= %ф МС.\Н", t_proc,((поплавка)t_proc)*1000./CLOCKS_PER_SEC);
 функции printf("---->> сохранение в\т %д циклов \т= %ф МС.\Н", t_save,((поплавка)t_save)*1000./CLOCKS_PER_SEC);

 возврат 0;
}

Результаты выполнения на i7 с ПК enter image description here

Результаты выполнения на Raspberry ПИ (генерируемые ОС из сборочного окружения) enter image description here

Как вы можете видеть, что есть огромная разница. Мне нужно, чтобы оптимизировать каждую деталь, так что в этом примере обработка шаг происходит в "ближней" в режиме реального времени на максимум 15мс время.

На мой вопрос о:

  • Как я могу оптимизировать мой ОС, так что он может обрабатывать интенсивных вычислений приложений и как может контролировать приоритеты каждой части?
  • Как я могу полностью использовать 4 ядра RPI3, чтобы выполнить требования?
  • Есть ли другие возможности, а не в формате OpenCV?
  • Я должен использовать C вместо C++?
  • Любые аппаратные улучшения, которые вы рекомендуете?