roboforum.ru

Технический форум по робототехнике.
Текущее время: 03 май 2025, 02:57

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Как обработать видео.
СообщениеДобавлено: 08 фев 2010, 04:57 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
flyroman, да дело не в том, что vlc в принципе не подходит. как вариант вполне можно использовать. вот смотри, ты пробовал получать цвет пикселей, но реально на всём канвасе у тебя всё было залито одним цветом. а эт значит только одно - оверлей и до самого изображения всякими getpixel ну никак не доберёшся. для этого тебе нужно будет писать "фильтр". а там не всё так просто и легко, смысл в это всё лезть? эт первое и основное.
второе. вообще по нормальному нельзя работать с данными, получаемых попиксельно из канваса. каждый вызов getpixel или чего-то аналогичного это оооооооооооооооочень много лишних телодвижений, начиная с того, что это уже вызов функции, заканчивая тем, что эта функция сама по себе делает много ненужных телодвижений.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как обработать видео.
СообщениеДобавлено: 08 фев 2010, 08:19 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
второй заход:
viewtopic.php?f=51&t=6860 - Emgu CV - opencv на vb с помощью .net
туторы:
viewtopic.php?f=51&t=6395#p113373, viewtopic.php?f=51&t=6395&start=30#p146462
граб видео через opencv:
Код:
/*
* Программа захватывает видео с камеры
* Для выхода используется клавиша e
*/
#include <highgui.h>
#include <stdio.h>

int main()
{
   // создаем окошко для манипуляций
   const char *window = "Тестовое окно";   
   cvNamedWindow(window);

   // буфер-кадр
   IplImage *img;
   // создаем поток для видео
   CvCapture *camera = cvCreateCameraCapture(CV_CAP_ANY);

   do {
      img = cvQueryFrame(camera);
      cvShowImage(window, img);
   } while (cvWaitKey(33) != 'e');

   cvDestroyAllWindows();
}

готовый кадр захватывается одной функцией и ничего придумывать не надо. да, opencv прекрасно работает с тюнерами.
если так хочется делать захват через сторонние либы - пожалуйста, но только никак не getpixel'om, а получением указателя(1) на сграбленное изображение.
после чего нужно создать хидер для изображения и натравить указатель данных из структуры на указатель (1). три строчки
Код:
char *ptr;   // указатель на начало сграбленного изображения
IplImage *frame = cvCreateImage(cvSize(640, 480),IPL_DEPTH_8U, 3);   // хидер
frame->imageData = ptr;   // привязали данные


Добавлено спустя 1 минуту 10 секунд:
если в библиотеке захвата изображение хранится не попиксельно, то нужно будет создать CvMat и произвести нужные преобразования.

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как обработать видео.
СообщениеДобавлено: 08 фев 2010, 17:09 
Не в сети
Аватара пользователя

Зарегистрирован: 12 янв 2009, 21:39
Сообщения: 1266
Откуда: Чебоксары, Чувашская Республика
Skype: roman.buhalov
прог. языки: Basic, VisualBasic,Pascal, Delphi, ASM
ФИО: Роман Сергеевич
Так, от VLC я отказался, в силу того что нашел код нормального приема с видеоустройств.
код как раз для VB.

1. Принимает очень быстро картинка не тормозит.
2. Можно считать пиксели.

_________________
«Это невозможно» — сказала Причина. «Это безрассудно!» — заметил Опыт. «Это бесполезно!» — отрезала Гордость.
«Попробуй» — шепнула Мечта…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как обработать видео.
СообщениеДобавлено: 08 фев 2010, 17:51 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
именно код или какая-то библиотека с примерами кода? :oops: делись, может кому тоже згодится


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как обработать видео.
СообщениеДобавлено: 08 фев 2010, 18:25 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
ссылочку хотя бы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как обработать видео.
СообщениеДобавлено: 08 фев 2010, 19:28 
Не в сети
Аватара пользователя

Зарегистрирован: 12 янв 2009, 21:39
Сообщения: 1266
Откуда: Чебоксары, Чувашская Республика
Skype: roman.buhalov
прог. языки: Basic, VisualBasic,Pascal, Delphi, ASM
ФИО: Роман Сергеевич
Захват видео с устройств.
Код для Visual Basic 6.0
Используется библиотека avicap32.dll

Мне ненравится то, что картинка сохраняется в файл, а потом открывается (работа с винчестером всегда затормаживает работу программы) хочу сделать чтобы в буфер кидала изображение.

Код:
Option Explicit

Const WM_USER = 1024
Const WM_CAP_DRIVER_CONNECT = WM_USER + 10
Const WM_CAP_SET_PREVIEW = WM_USER + 50
Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Const WM_CAP_DRIVER_DISCONNECT = WM_USER + 11
Const WM_CAP_GRAB_FRAME = WM_USER + 60
Const WM_CAP_FILE_SAVEDIB = WM_USER + 25

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal HWND As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessageString Lib "user32" Alias "SendMessageA" (ByVal HWND As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal a As String, ByVal b As Long, ByVal c As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Long, ByVal h As Integer) As Long
Private Declare Function capGetDriverDescription Lib "avicap32" Alias "capGetDriverDescriptionA" (ByVal wDriverIndex As Long, ByVal lpszName As String, ByVal cbName As Long, ByVal lpszVer As String, ByVal cbVer As Long) As Long

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dim hWDC As Long
Dim STARTcap As Boolean
Dim i, j, k, i2, j2 As Integer
Dim c, f, h As Long

Private Sub Command1_Click()
hWDC = capCreateCaptureWindow("VideoCapture", 0, 0, 0, 320, 240, Picture1.HWND, 0)
  If (hWDC <> 0) Then
    SendMessage hWDC, WM_CAP_DRIVER_CONNECT, 0, 0
     STARTcap = True
     Timer1.Enabled = True
   Else
    MsgBox ("no cam found")
  End If
End Sub


Private Sub Command2_Click()
If STARTcap = True Then
Call SendMessage(hWDC, WM_CAP_DRIVER_DISCONNECT, 0, 0)
STARTcap = False
End If
End Sub

Private Sub Form_Terminate()
f = 10000
i2 = 0
j2 = 0
Picture1.ScaleMode = vbPixels
Timer1.Enabled = False
If STARTcap = True Then
Call SendMessage(hWDC, WM_CAP_DRIVER_DISCONNECT, 0, 0)
STARTcap = False
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
Timer1.Enabled = False
If STARTcap = True Then
Call SendMessage(hWDC, WM_CAP_DRIVER_DISCONNECT, 0, 0)
STARTcap = False
End If
End Sub

Private Sub Timer1_Timer()
On Error GoTo 1
    SendMessage hWDC, WM_CAP_GRAB_FRAME, 0, 0
    SendMessageString hWDC, WM_CAP_FILE_SAVEDIB, 0, App.Path & "\VIDEO1.BMP"
    Picture1.Picture = LoadPicture(App.Path & "\VIDEO1.BMP")

    DoEvents
1:
End Sub

_________________
«Это невозможно» — сказала Причина. «Это безрассудно!» — заметил Опыт. «Это бесполезно!» — отрезала Гордость.
«Попробуй» — шепнула Мечта…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как обработать видео.
СообщениеДобавлено: 08 фев 2010, 19:58 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Можно рам-диск юзать :)))

Добавлено спустя 12 минут 30 секунд:
http://bit.pirit.info/forum/viewtopic.php?t=7436&highlight=


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как обработать видео.
СообщениеДобавлено: 08 фев 2010, 22:17 
Не в сети
Аватара пользователя

Зарегистрирован: 12 янв 2009, 21:39
Сообщения: 1266
Откуда: Чебоксары, Чувашская Республика
Skype: roman.buhalov
прог. языки: Basic, VisualBasic,Pascal, Delphi, ASM
ФИО: Роман Сергеевич
Michael_K, отдуши спасибо за ссылку!

_________________
«Это невозможно» — сказала Причина. «Это безрассудно!» — заметил Опыт. «Это бесполезно!» — отрезала Гордость.
«Попробуй» — шепнула Мечта…


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO