1 Востаннє редагувалося taburyak (10.03.2017 10:21:05)

Тема: AForge.net VideoSourcePlayer

Вітання.

Є на головній формі control VideoSourcePlayer

По натисканню кнопки "connect" показує на цьому контролі зображення з вебкамери з заданим наперед розміром.

// On "Connect" button clicked
        private void connectButton_Click( object sender, EventArgs e )
        {
            if ( videoDevice != null )
            {
                if ( ( videoCapabilities != null ) && ( videoCapabilities.Length != 0 ) )
                {
                    videoDevice.VideoResolution = videoCapabilities[videoResolutionsCombo.SelectedIndex];
                }

                if ( ( snapshotCapabilities != null ) && ( snapshotCapabilities.Length != 0 ) )
                {
                    videoDevice.ProvideSnapshots = true;
                    videoDevice.SnapshotResolution = snapshotCapabilities[snapshotResolutionsCombo.SelectedIndex];
                    videoDevice.SnapshotFrame += new NewFrameEventHandler( videoDevice_SnapshotFrame );
                }

                EnableConnectionControls( false );

                videoSourcePlayer.VideoSource = videoDevice;
                videoSourcePlayer.Start( );
            }
        }

По натисканню кнопки на вебкамері чи на формі, роблю захват кадру, кадр в bitmap, показую іншу форму snapshotForm з pictureBox на ній, обробляю якось те зображення, щось домальовую на зображенні і виводжу на той pictureBox.

// New snapshot frame is available
        private void videoDevice_SnapshotFrame( object sender, NewFrameEventArgs eventArgs )
        {
            ShowSnapshot( (Bitmap) eventArgs.Frame.Clone( ) );
        }        

        private void ShowSnapshot(Bitmap snapshot)
        {
            if ( InvokeRequired )
            {
                Invoke(new Action<Bitmap>(ShowSnapshot), snapshot);
            }
            else
            {
                if ( snapshotForm == null )
                {
                    snapshotForm = new SnapshotForm( );
                    snapshotForm.FormClosed += new FormClosedEventHandler( snapshotForm_FormClosed );
                    snapshotForm.Show( );
                }                
                
                // обробляю
                Bitmap Work_BMP = imageProcessing(snapshot);
                
                // тут домальовую
                //...

                snapshotForm.SetImage(Work_BMP, anyVar);
                }
}

Все це працює. Але потрібно позбутись форми snapshotForm. Треба щоб по натисканню кнопки "snapshot" замість відео з вебкамери на control VideoSourcePlayer вивести захоплений кадр вже оброблений і домальований як і було з додатковою формою.

Як це зробити? Чи є можливість на control VideoSourcePlayer вивести захоплений кадр як картинку і тримати її поки знову не натиснути якусь кнопку і продовжити показ відео? Чи треба просто сховати control VideoSourcePlayer, а замість нього показати вже pictureBox того ж розміру і вже туди вивести захоплений кадр?

Весь код зліпив по прикладам і ще слабо розбираюсь що до чого. Тільки почав розбиратись з цим, тому виникають подібні, можливо надто ламерскі, питання.

2

Re: AForge.net VideoSourcePlayer

Вже порішав. сховав control VideoSourcePlayer, а замість нього показав pictureBox того ж розміру по тім же ж координатам. Підходить.

Подякували: LoganRoss1