PBKK B - TUGAS 2
PBKK B - TUGAS 2 - Capture Camera
LATIHAN TUGAS 2
Tugas ini dibuat menggunakan Microsoft Visual Studio 2022. Dalam pengembangan fitur Capture Camera, dibutuhkan kamera, baik yang bersifat eksternal maupun yang sudah terintegrasi dalam laptop. Proses pembuatan ini memerlukan penggunaan beberapa library yang dapat diunduh dari Aforge.Net. Beberapa library yang digunakan antara lain:
- - Aforge.Video.dll
- - Aforge.dll
- - Aforge.VideoDirectionShow.dll
Fitur utama dari Camera Capture melibatkan tombol start untuk memulai kamera, diikuti oleh tombol Capture untuk menangkap gambar yang akan di-clone dari picture box 1. Terdapat juga tombol switch yang berfungsi untuk mengganti kamera dan terletak di ujung atas kiri layar. Selain itu, disertakan tombol save image untuk menyimpan gambar, dan tombol exit untuk keluar dari program. Proses pergantian kamera dilakukan dengan langkah-langkah berikut:
- 1. Pilih kamera
- 2. Mulai
- 3. Pilih kamera yang akan diganti
- 4. Mulai kembali
Berikut adalah dokumentasi dan source code terkait.
using System; | |
using System.Collections.Generic; | |
using System.ComponentModel; | |
using System.Data; | |
using System.Drawing; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
using System.Windows.Forms; | |
using AForge; | |
using AForge.Video; | |
using AForge.Video.DirectShow; | |
using System.Drawing; | |
using System.Drawing.Imaging; | |
namespace Camera | |
{ | |
public partial class Form1 : Form | |
{ | |
private FilterInfoCollection captureDevice; | |
private VideoCaptureDevice videoSource; | |
public Form1() | |
{ | |
InitializeComponent(); | |
} | |
private void Form1_Load(object sender, EventArgs e) | |
{ | |
captureDevice = new FilterInfoCollection(FilterCategory.VideoInputDevice); | |
foreach (FilterInfo deviceList in captureDevice) | |
{ | |
comboBoxWebcamList.Items.Add(deviceList.Name); | |
} | |
comboBoxWebcamList.SelectedIndex = 0; | |
videoSource = new VideoCaptureDevice(); | |
} | |
private void buttonStart_Click(object sender, EventArgs e) | |
{ | |
if (videoSource.IsRunning) | |
{ | |
videoSource.SignalToStop(); | |
videoSource.WaitForStop(); | |
pictureBox1.Image = null; | |
pictureBox1.Invalidate(); | |
} | |
videoSource = new VideoCaptureDevice(captureDevice[comboBoxWebcamList.SelectedIndex].MonikerString); | |
videoSource.NewFrame += new NewFrameEventHandler(VideoSource_NewFrame); | |
videoSource.Start(); | |
} | |
private void VideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs) | |
{ | |
pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); | |
} | |
private void buttonCapture_Click(object sender, EventArgs e) | |
{ | |
pictureBox2.Image = (Bitmap)pictureBox1.Image.Clone(); | |
} | |
private void buttonSaveImage_Click(object sender, EventArgs e) | |
{ | |
SaveFileDialog saveFileDialog = new SaveFileDialog(); | |
saveFileDialog.Title = "Save Image As"; | |
saveFileDialog.Filter = "Image files (*.jpg, *.png | *.jpg, *.png"; | |
ImageFormat imageFormat = ImageFormat.Png; | |
if (saveFileDialog.ShowDialog() == DialogResult.OK) | |
{ | |
string ext = System.IO.Path.GetExtension(saveFileDialog.FileName); | |
switch (ext) | |
{ | |
case ".jpg": | |
imageFormat = ImageFormat.Jpeg; | |
break; | |
case ".png": | |
imageFormat = ImageFormat.Png; | |
break; | |
} | |
pictureBox2.Image.Save(saveFileDialog.FileName, imageFormat); | |
} | |
} | |
private void buttonExit_Click(object sender, EventArgs e) | |
{ | |
if (videoSource.IsRunning) | |
{ | |
videoSource.SignalToStop(); | |
videoSource.WaitForStop(); | |
pictureBox1.Image = null; | |
pictureBox1.Invalidate(); | |
pictureBox2.Image = null; | |
pictureBox2.Invalidate(); | |
} | |
Application.Exit(null); | |
} | |
} | |
} |
Komentar
Posting Komentar