iskees
Пользователи-
Количество публикаций
202 -
Зарегистрирован
-
Посещение
-
Days Won
19
Все публикации пользователя iskees
-
кадр с видео выложите, а то гадание на кофейной гуще.
-
Как соберете сами это дело под винду, то выложите сюда. Тоже интересно посмотреть, но заниматься геморроем со сборкой и прочим нет желания.
-
Спасибо, попробую. Тестирую производительность и столкнулся с одной странностью: sobel и canny на изображении 32F быстрее чем на U8 процентов на 50. Ощущение что операции с U8 матрицами вообще медленнее чем с 32F хотя логика подсказывает что должно быть наоборот.
-
SVM-light Version V6.02 2 # kernel type 3 # kernel parameter -d 1 # kernel parameter -g 1 # kernel parameter -s 1 # kernel parameter -r empty# kernel parameter -u 11 # highest feature index 168015 # number of training documents 36580 # number of support vectors plus 1 0.52852846 # threshold b, each following line is a SV (starting with alpha*y) -0.49999999999727612 1:1 2:-0.97321862 3:0 4:0 5:0.31793973 6:38.749599 7:-1 8:1 9:1 10:1 11:90.104164 # 0.49999999999727612 1:1 2:-1 3:0 4:0 5:0.41736919 6:24.041599 7:-1 8:0.98609132 9:0.88873035 10:1 11:92.61364 # и так далее строки с цифрами на 4 метра
-
Компоновка цифр и букв автомобильного номера
iskees replied to enrico_ffcv's topic in Обсуждение общих вопросов
Те кто сталкивался тот вам такое не раскажет, так как опенсорса нет, а коммерческие решения никто раскрывать ну будет. Если у вас известны координаты, то берете да распознаете символы и смотрите под какой шаблон один подходят. -
1 простая бинаризаця по порогу 2 накалываемым все изображения друг на друга с шагом в пиксель и сравниваем пиксель в пиксель 3 если порядок снимком известен то сразу сшиваем 4 Если порядок случайный то ищем такую комбинацию в которой ошибка склейки минимальна число черных меток можно найти: 1 бинарзация -число контуров 2 бинаризация - контуры -считаем средний площадь контура- делим число черных пикселей на среднею площадь контура. Так можно устранить ошибок от склейки двух меток.
-
Можно, создаете picturebox на форме переводите изображение из iplImage в bitmap var bitmap=image.ToBitmap(); и загоняете его в picturebox picturebox.image=bitmap; при обновлении кадра не забывайте уничтожать старый image и bitmap. Ну и разуется все это делается в потоке создавшем форму. Учтете что вывод картинки большого разрешения нагрузка на процессор сильно возрастает и лучше использовать уже directx.
-
Если будите делать сравнение с другими алгоритмами, то было бы интересно просмотреть графики "fps/разрешение кадра" и насколько зависит качество отслеживания от разрешение видео.
- 48 replies
-
- детектор движения
- motion detection
- (и ещё %d)
-
Находим в кадре лица, человеческие фигуры, и т.д. и т.п
iskees replied to Smorodov's topic in Обсуждение общих вопросов
Самое очевидное - отслуживать мелкую мимику, на фото могут быть только аффинные изменения и все что связанно с освещением. И не так давно были публикации про определение пульса по веб камере, так вот у фото или даже 3д модели головы пульса не будет. -
Исходя из железа можно сразу исключить все варианты классификаторов. Так как основная черта искомого объекта это его мерцания, то логично что поиск надо производить не в статике а в динамике. Я бы попробовал следующее: 1 Найти оптический поток что бы нивелировать движение камеры и объектов на сцене (можно выделить в отдельный поток) 2 Ищем перепады яркости и цвета, в текущем и предыдущем кадре с учетом смещения из оптического потока (можно в качестве предыдущего кадра брать среднее значения за время полупериода мерцания). тут главное найти не все всплески пусть даже и с шумом. 3 Фильтруем полученные данные по критерию: период мерцания, линейность движения 5 Так как нормально отфильтровать можно ну хотя бы с лагом в 5 мерцания ( а требованиях лаг должен быть 2 периода) , то экстрополируем движения траекторию движения что бы предсказать положение объекта в текущем кадре. все кроме оптического потока железо точно потянет, хотя может и его уже ускорили.
-
Парочку отгоняющих вопросов: 1. желаемое фпс 2 нужно находить точное положение светодиода в каждом кадре, или можно выдавать положение один раз в секунду например 3 когда светодиод не горит камера его нормально видит или нет 4 примерная производительность железа
-
Bes видимо имел ввиду: если эта фотография взята с карт гугла или яндекса, то взять туже область в векторном виде (у гугла это "карта") и там уже все размечено. Ну, а вот так взять и автоматически разметить здания по фотографии с применимой ошибкой, мне кажется это не решаем задача.
-
surf/sift сравнить все со всеми и разбить на группы по какому-то порогу, и выбрать вариант разбиение в котором суммарное(или еще как) среднеквадратичное отклонение по всем группам минимальное.
-
Если не трудно выложите файл найтроек для украинских номеров
-
Есть сферические панорамы,нужно их "расшить" в набор изображение, так что бы каждый кусок был без искажения геометрии. В общем то-же делает просмотрщик таких панорам. В целом представляю как это делается, интересует может есть встроенная в opencv функция или пример хороший.
-
Ну да, только не один куб, а много пересекающихся для перекрытия мест близких к граням. Но я ищу готовое решение.
-
Распознавание данных кредитной карты(не могу найти базу символов).
iskees replied to KAIIUK's topic in Вопросы по нейросетям и ИИ
заодно сфоткать обратные стороны кредиток, у купить билет в страну без выдачи -
В одном из врпаперов opencv (opencvsharp) есть такое: класс Iplimage public IplImage GetSubImage(CvRect rect) { if (rect.Width < 0) throw new ArgumentException(); if (rect.Height < 0) throw new ArgumentException(); if (rect.X + rect.Width >= this.Width) rect.Width = this.Width - rect.X - 1; if (rect.Y + rect.Height >= this.Height) rect.Height = this.Height - rect.Y - 1; if (rect.X < 0) { rect.Width += rect.X; rect.X = 0; } if (rect.Y < 0) { rect.Height += rect.Y; rect.Y = 0; } IplImage iplImage = new IplImage(rect.Size, this.Depth, this.NChannels); this.SetROI(rect); Cv.Copy((CvArr) this, (CvArr) iplImage); this.ResetROI(); return iplImage; } SetROI это [DllImport("opencv_core248", CallingConvention = CallingConvention.Cdecl)] public static extern void cvSetImageROI(IntPtr image, CvRect rect); а Cv.Copy это [DllImport("opencv_core248", CallingConvention = CallingConvention.Cdecl)] public static extern void cvCopy(IntPtr src, IntPtr dst, IntPtr mask); mask null Я никак не пойму почему там -1 и >=, зачем отрезаются крайняя строка и колонка if (rect.X + rect.Width >= this.Width) rect.Width = this.Width - rect.X - 1; if (rect.Y + rect.Height >= this.Height) rect.Height = this.Height - rect.Y - 1; Переписал это с > и без -1 но при вырезании если используется крайняя строка или колонка то там какие то там левые значения. Не пойму это или я где-то туплю, или какая-то ошибка в реализации cvCopy и cvSetImageROI к которым доступа нет.
-
у меня такой <?xml version="1.0"?> <configuration> <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup> </configuration>
- 8 replies
-
- 1
-
- OpenCv
- OpenCvSharp
-
(и ещё %d)
Теги:
-
В app.config делаем так <startup useLegacyV2RuntimeActivationPolicy="true">
- 8 replies
-
- OpenCv
- OpenCvSharp
-
(и ещё %d)
Теги:
-
Vector[j + (i * Image.Height)] на ширину умножайте, а не на высоту и в bitmap GetPixel( x, y) в opencv наоборот
-
Увы но Caffe на .net никак не представлен, самое приличное по скорости и наличию .net это fann. Если нужно распознать "скорость" то я бы 4ый шаг заменил на hog, по скорости он быстрый но зато боле устойчивый чем просто изображение, ну и полученный дескриптор в самою простою нейросеть. А несколько Haar-ов да еще в реалтайме (судя по задаче) тут уже серьезная видеокарты нужна будет. ссылка на рабочая Здесь еще сравнительная таблица есть: http://rodrigob.gith...ffic_signs.pdf
- 8 replies
-
- 1
-
- OpenCv
- OpenCvSharp
-
(и ещё %d)
Теги:
-
Подставим сл. вариант: image размером 320 на 240 вырезаем квадрат left- 0 top-0 width-320 height-240, т.е. просто копируем if (rect.X + rect.Width >= this.Width) //0+320>=320 -true rect.Width = this.Width - rect.X - 1; // 320-0-1 В результате width будет 319 и height 239
-
вообще не понятно о чем речь
-
ваш код крашится на загрузке каскада так работает, и что то фиксирует но не очень хорошо: using System; using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Imaging; using System.Windows.Threading; using Emgu.CV.Structure; using Emgu.CV; using System.Runtime.InteropServices; namespace WpfFaceDetectionTest { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { private Capture capture; private Emgu.CV.CascadeClassifier haarCascade; DispatcherTimer timer; public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { capture = new Capture(); if (File.Exists("haarcascade_frontalface_alt_tree.xml")) haarCascade = new CascadeClassifier(@"haarcascade_frontalface_alt_tree.xml"); timer = new DispatcherTimer(); timer.Tick += new EventHandler(timer_Tick); timer.Interval = new TimeSpan(0, 0, 0, 0, 1); timer.Start(); } void timer_Tick(object sender, EventArgs e) { Image<Bgr,Byte> currentFrame = capture.QueryFrame(); if (currentFrame != null) { Image<Gray, Byte> grayFrame = currentFrame.Convert<Gray, Byte>(); var detectedFaces = haarCascade.DetectMultiScale(grayFrame,1.1,5,new System.Drawing.Size(20,20), System.Drawing.Size.Empty); foreach (var face in detectedFaces) currentFrame.Draw(face, new Bgr(0, double.MaxValue, 0), 3); image1.Source = ToBitmapSource(currentFrame); } } [DllImport("gdi32")] private static extern int DeleteObject(IntPtr o); public static BitmapSource ToBitmapSource(IImage image) { using (System.Drawing.Bitmap source = image.Bitmap) { IntPtr ptr = source.GetHbitmap(); //obtain the Hbitmap BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( ptr, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); DeleteObject(ptr); //release the HBitmap return bs; } } } }