реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Наложение текста на видео
maloii
сообщение Feb 29 2008, 08:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Возникла задача собрать схемку на меге8 которая будет выводить по верх изображения буковки. Тоесть, есть PAL видео сигнал который идёт от камеры, нужно наложить некий текст поверх изображения, допустим время. Сам я ещё новечёк, микроконтроллеры знаю мало, прочёл книжку "Создаём устройства на микро контроллерах" А. В. Белов. Получил общее представление, но как видео сигнал создать ещё мало представляю. В общем предполагаю что нужно создать сигнал и параллельно кинуть его на провод от камеры. Искал здесь похожие темы, чтото нашел но там всё описано всё более глубже, а я хочу для начала научится посто выводить буквы, а потом уже конкретные данные 05.gif .

Может кто выложит простенькую схемку и алгоритм. Только просьба без лишних наворотов, а то бошка вскипит 07.gif .
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 29 2008, 09:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 maloii - тема в принципе не новая - но так навскидку помнится писали, что мега едва справляеться - типа лучше фпга или цплд поставить....
Go to the top of the page
 
+Quote Post
acex2
сообщение Feb 29 2008, 10:09
Сообщение #3


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(maloii @ Feb 29 2008, 11:14) *
Возникла задача собрать схемку на меге8 которая будет выводить по верх изображения буковки. Тоесть, есть PAL видео сигнал который идёт от камеры, нужно наложить некий текст поверх изображения, допустим время. Сам я ещё новечёк, микроконтроллеры знаю мало, прочёл книжку "Создаём устройства на микро контроллерах" А. В. Белов. Получил общее представление, но как видео сигнал создать ещё мало представляю. В общем предполагаю что нужно создать сигнал и параллельно кинуть его на провод от камеры. Искал здесь похожие темы, чтото нашел но там всё описано всё более глубже, а я хочу для начала научится посто выводить буквы, а потом уже конкретные данные 05.gif .

Может кто выложит простенькую схемку и алгоритм. Только просьба без лишних наворотов, а то бошка вскипит 07.gif .


Если без наворотов и без познаний в основах видеосигнала, то берите готовую микросхему OSD (on-screen display). Например, MAX7456. Там уже все сделано, надо просто через SPI команды передавать.
Go to the top of the page
 
+Quote Post
maloii
сообщение Feb 29 2008, 12:35
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Цитата(acex2 @ Feb 29 2008, 13:09) *
Если без наворотов и без познаний в основах видеосигнала, то берите готовую микросхему OSD (on-screen display). Например, MAX7456. Там уже все сделано, надо просто через SPI команды передавать.

не хочу именно изучить, чё до как smile.gif
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Feb 29 2008, 13:16
Сообщение #5


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



для начала научиться выводить пустое окно

для этого надо отследить кадровый импульс (изображение передаётся полукадрами)
соответственно отследить 2 импульса

потом отследить строчные - кадровые импульсы относительно строчных если мне не изменяют память сдвинуты - так как первый полукадр снизу дорисовывает до середины экрана и возвращается вертикально вверх по кадру, соотв начиная строку сверху рисовать с середины, а заканчивается второй до конца и обратный ход возврат по диагонали в левый верхний угол и так далее

как только отследите точки отсчитывайте от строчных импульсов время и переключайте пушки на окно и обратно
Go to the top of the page
 
+Quote Post
maloii
сообщение Feb 29 2008, 17:00
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Цитата(rv3dll(lex) @ Feb 29 2008, 16:16) *
для начала научиться выводить пустое окно

для этого надо отследить кадровый импульс (изображение передаётся полукадрами)
соответственно отследить 2 импульса

потом отследить строчные - кадровые импульсы относительно строчных если мне не изменяют память сдвинуты - так как первый полукадр снизу дорисовывает до середины экрана и возвращается вертикально вверх по кадру, соотв начиная строку сверху рисовать с середины, а заканчивается второй до конца и обратный ход возврат по диагонали в левый верхний угол и так далее

как только отследите точки отсчитывайте от строчных импульсов время и переключайте пушки на окно и обратно

Легко сказать 05.gif , покажите пример схемы и код, или где почитать 07.gif
Go to the top of the page
 
+Quote Post
jasper
сообщение Feb 29 2008, 18:57
Сообщение #7


Народный чинитель
***

Группа: Участник
Сообщений: 415
Регистрация: 15-07-05
Пользователь №: 6 811



Цитата(maloii @ Feb 29 2008, 22:00) *
Легко сказать 05.gif , покажите пример схемы и код, или где почитать 07.gif

Simple VGA/Video adapter with ATmega AVR
Go to the top of the page
 
+Quote Post
maloii
сообщение Mar 6 2008, 18:47
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Чтото уже более осмысленное стало выводится но не до конца. По логике вещей должна вывестись одна линия, но выводится 2, плюс они очень реагируют на внешние факторы, видео прилагаю. http://sale-music.com/MPEG0002.AVI

непойму чё не так 07.gif


Код
#incl*ude <mega8.h>
#incl*ude <delay.h>  
              

int i=0;

int start_line=200;    // íà÷èíàåì âûâîä ñ ëèíèè íîìåð 100

// ñàì òåñòîâûé ñèìâîë (íàðèñîâàí 0 åäèíè÷êàìè)

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{                
        if (i>start_line && i<start_line+90)  {  
                delay_us(20);
                PORTD.7 = 1;
                PORTD.7 = 1;  
                PORTD.7 = 1;
                PORTD.7 = 1;
                PORTD.7 = 0;  
          }
        i++;    
}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
        i=0;
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=1 State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x80;
DDRD=0x80;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: On
// INT1 Mode: Any change
GICR|=0xC0;
MCUCR=0x05;
GIFR=0xC0;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")
PORTD.7 = 0;
while (1)
{    
      #asm("sleep")
};
}
Go to the top of the page
 
+Quote Post
m-s
сообщение Nov 3 2008, 15:40
Сообщение #9





Группа: Новичок
Сообщений: 6
Регистрация: 11-12-05
Из: Харьков
Пользователь №: 12 084



Делали проэкт на этом максе, очень симпотно получилось.
Go to the top of the page
 
+Quote Post
Максим Зиновьев
сообщение Nov 3 2008, 17:32
Сообщение #10


Техногипнолог
*****

Группа: Свой
Сообщений: 1 132
Регистрация: 6-03-05
Из: Saratov
Пользователь №: 3 126



Цитата(maloii @ Feb 29 2008, 15:35) *
не хочу именно изучить, чё до как smile.gif


Начните тогда с ГОСТ 7845-92 http://handmade.default.lv/viewtopic.php?t=402

Если не париться с чресстрочностью, то легше, это зависит от размера фонта


Цитата
но выводится 2
wink.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 02:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01447 секунд с 7
ELECTRONIX ©2004-2016