Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Запись скрина в массив


Автор: capr 19.10.2005, 12:46
Уважаемые!
Как представить видео на экране в виде двумерного массива отдельных пикселей по вертикали и горизонтали (или нескольких пикселей) в VB6 , для последующего мат. анализа.
Спасибо .

Автор: Exception 19.10.2005, 13:42
откуда видео? из файла?
Или ты имеешь в виду видеозахват с экрана? конкретнее..
можно по таймеру вызывать принтскрин и сохранять в пикчербоксе..
затем сохранять в массив.. какая задача полностью?

Автор: capr 19.10.2005, 14:44
Захват видео с экрана в массив или с копии кадра уже из PictureBox
Анализ на изменение фрагментов кадра.

Автор: Kergan 19.10.2005, 14:53
есть такая АПИшка - GetPixel.
Ей передаешь Picture.hwnd и координаты пиксела, она возвращает цвет...
Код

for x = XMIN to XMAX
    for y = YMIN to YMAX
          Massiv(x,y) = GetPixel(HWND,x,y)
    next y
next x

Типа того....
можно и по-другому, через метод Point, но это - быстрее smile

Автор: capr 19.10.2005, 15:04
Спасибо, попробуем

Автор: Kergan 19.10.2005, 15:06
Кстати, если функция возвращает -1, значит, где-то ашипка...

Автор: Vach 19.10.2005, 15:10
Чтобы получить скриншот в Picture1 и далее как сказал Kergan
Код
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function GetDC Lib "USER32" (ByVal hwnd As Long) As Long

Private Sub Form_Load()
    Picture1.Width = Screen.Width
    Picture1.Height = Screen.Height
    Picture1.AutoRedraw = True
    BitBlt Picture1.hDC, 0, 0, Screen.Width / Screen.TwipsPerPixelX, Screen.Height / Screen.TwipsPerPixelY, GetDC(0), 0, 0, vbSrcCopy
    Picture1.Picture = Picture1.Image
End Sub
Но кажется что всё не про то... откуда "видео" на "экране" берётся?

Автор: Kergan 19.10.2005, 15:16
Можно, правда, разбобраься со структурами каких-нить видеофайлов и сделать по-другому.... Но это достаточно трудоемкий процесс.

Автор: capr 19.10.2005, 17:40
Благодарю !
Видео берется из камеры через каптюрную плату или USB .
А возможно ли прямо в массив с участка скрина где окошко другой программы TV-capture или камеры ?

Автор: Vach 19.10.2005, 18:54
Вот про то ... http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=23923&lngWId=1.

Автор: Guest 19.10.2005, 21:11
Спасибо, но похоже это не совсем то. Я хотел бы просто брать кадры с любого видеоокна на экране, с видео или каптюр платы, по USB входу или с видеоплейера, и далее обрабатывать массивы пикселей взятых с любого окна на экране. До завтра

Автор: Vach 20.10.2005, 14:35
http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=24707&lngWId=1
"и далее обрабатывать массивы пикселей взятых с любого окна на экране"
Удачи.

Автор: capr 20.10.2005, 17:49
Посмотрел. На базе этих двух примеров наверное получиться решить . Последняя программа, UltraSpy - работает через скриншот и сразу видно вместо кино на windows player - черная дыра , а VB capture - захватывает эти данные , но толко с каптюрного железа .
Спасибо, попробуем.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)