• Tidak ada hasil yang ditemukan

Penerapan Face Recognition pada Keamanan Folder Menggunakan Metode Eigenface

N/A
N/A
Protected

Academic year: 2019

Membagikan "Penerapan Face Recognition pada Keamanan Folder Menggunakan Metode Eigenface"

Copied!
18
0
0

Teks penuh

(1)

LAMPIRAN : LISTING PROGRAM

//Form Utama

Public Class FormUtama Public Sub menuutama()

Dim UCUtama As New UserControlUtama PanelControl.Controls.RemoveAt(0) PanelControl.Controls.Add(UCUtama) End Sub

Public Sub menuLogin()

Dim UCLogin As New UserControlLogin PanelControl.Controls.RemoveAt(0) PanelControl.Controls.Add(UCLogin) End Sub

Public Sub Daftar()

Dim UCDaftar As New UserControlDaftar PanelControl.Controls.RemoveAt(0) PanelControl.Controls.Add(UCDaftar) End Sub

Public Sub Profil()

Dim UCProfil As New UserControlProfil PanelControl.Controls.RemoveAt(0) PanelControl.Controls.Add(UCProfil) End Sub

Private Sub FormUtama_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Dim UCLogin As New UserControlLogin Dim UCLogin As New UserControlLogin2 PanelControl.Controls.Add(UCLogin) End Sub

End Class

//Form Login Alternatif

Public Class FormLoginAlternatif

Private Sub Button1_Click(sender As Object, e As EventArgs)

End Sub

Private Sub ButtonLogin_Click(sender As Object, e As EventArgs) Handles ButtonLogin.Click

Dim gagal As Boolean = True

(2)

If (TextBox1.Text = _listuser.getlistuser(i).UID And TextBox2.Text = _listuser.getlistuser(i).password) Then

username = TextBox1.Text FormUtama.menuutama() gagal = False

Exit For End If Next

If gagal Then

MsgBox("UID atau Password anda salah")

End If

Me.Close() End Sub

End Class

//List Folder

<Serializable()> _ Public Class ListFolder <Serializable()> _ Structure ListFolder

Dim AlamatFolder As String Dim Status As String End Structure

Dim _ListFolder As List(Of ListFolder) Sub New()

_ListFolder = New List(Of ListFolder) End Sub

Sub hapus(ByVal index As Integer) If _ListFolder.Count - 1 = 0 Then

MessageBox.Show("Tidak Ada Folder di dalam daftar") Else

_ListFolder.Remove(_ListFolder(index)) End If

End Sub

Public Sub Tambah(ByVal alamatfolder As String, ByVal status As String) For Each A As ListFolder In _ListFolder

If A.AlamatFolder = alamatfolder Then

MsgBox("Folder Telah ada dalam Daftar!") Exit Sub

End If Next

Dim TmpListfolder As ListFolder

TmpListfolder.AlamatFolder = alamatfolder TmpListfolder.Status = status

_ListFolder.Add(TmpListfolder) End Sub

Function getAlamat(ByVal index As Integer) As String If index < 0 Then

Return "Tidak Ada" Else

(3)

End Function

Function jumlah() As Integer Return _ListFolder.Count End Function

Function getStatus(ByVal index As Integer) As String If index < 0 Or _ListFolder.Count = 0 Then Return "Tidak Ada"

Else

Return _ListFolder(index).Status End If

End Function

Sub setAlamat(ByVal index As Integer, ByVal alamat As String) If index < 0 Then

MsgBox("Tidak Ada") Else

Dim tmpList As ListFolder tmpList.AlamatFolder = alamat

tmpList.Status = _ListFolder(index).Status _ListFolder(index) = tmpList

End If End Sub

Sub setStatus(ByVal index As Integer, ByVal status As String) If index < 0 Then

MsgBox("Tidak Ada") Else

Dim tmpList As ListFolder

tmpList.AlamatFolder = _ListFolder(index).AlamatFolder tmpList.Status = status

_ListFolder(index) = tmpList End If

End Sub End Class

//List User

<Serializable()> _ Public Class listUser <Serializable()> _ Structure ListUser Dim UID As String Dim Nama As String Dim password As String Dim gbr1 As Bitmap Dim gbr2 As Bitmap Dim gbr3 As Bitmap End Structure

Dim _ListUser As List(Of ListUser) Sub New()

_ListUser = New List(Of ListUser) End Sub

'Public Sub Tambah(ByVal UID As String, ByVal nama As String, ByVal password As String)

'End Sub

(4)

If A.UID = UID Then

MsgBox("UID Telah ada dalam Daftar!") Exit Sub

End If Next

Dim tmplistuser As ListUser tmplistuser.UID = UID tmplistuser.Nama = nama

tmplistuser.password = password tmplistuser.gbr1 = gbr1

tmplistuser.gbr2 = gbr2 tmplistuser.gbr3 = gbr3

_ListUser.Add(tmplistuser)

MessageBox.Show("Data anda telah disimpan") End Sub

Function getlistuser(ByVal index As Integer) As ListUser Return _ListUser(index)

End Function

Function getlistuserimage(ByVal index As Integer) As List(Of Bitmap) Dim hasil As New List(Of Bitmap)

hasil.Add(Citra.grayscale(Citra.resize(_ListUser(index).gbr1))) hasil.Add(Citra.grayscale(Citra.resize(_ListUser(index).gbr2))) hasil.Add(Citra.grayscale(Citra.resize(_ListUser(index).gbr3))) Return hasil

End Function

Function getcount()

Return _ListUser.Count End Function

End Class

//ModuleGlobal

Imports System.IO

Imports System.Runtime.Serialization.Formatters.Binary

Module ModuleGlobal

Public _listuser As listUser Public username As String

Function cekFile(ByVal path As String, ByVal tampilpesan As Boolean, Optional Pesan As String = "") As Boolean

If System.IO.File.Exists(path) Then If Not Pesan = "" Then

MessageBox.Show(Pesan, "Pemberitahuan", MessageBoxButtons.OK, MessageBoxIcon.Information)

End If Return True Else

Return False End If

End Function

Function cekFolder(ByVal path As String, ByVal tampilpesan As Boolean, Optional Pesan As String = "") As Boolean

(5)

MessageBox.Show(Pesan, "Pemberitahuan", MessageBoxButtons.OK, MessageBoxIcon.Information)

End If Return True Else

Return False End If

End Function

Sub simpan(ByVal path As String, ByVal Data As Object)

Dim FS As New FileStream(path, FileMode.Append) ' FileStream FS = new FileStream(path, FileMode.Create);

Dim BF As New BinaryFormatter BF.Serialize(FS, Data)

FS.Close()

MsgBox("Selesai Menyimpan") End Sub

Public Sub simpanListUser()

If File.Exists("ListUser") Then File.Delete("ListUser") End If

Dim FS As New FileStream("ListUser", FileMode.Append) Dim BF As New BinaryFormatter

BF.Serialize(FS, _listuser) FS.Close()

End Sub

Public Sub LoadListUser()

Dim FS As New FileStream("ListUser", FileMode.Open) Dim BF As New BinaryFormatter

_listuser = BF.Deserialize(FS) FS.Close()

End Sub End Module

//PCA

Imports Accord.Math

Imports Accord.Math.Decompositions Imports Accord.Statistics

Imports Accord.Statistics.Analysis Imports Accord.Math.Comparers

Public Class PCA Structure wajah

Dim nama As String

Dim matrikskovarian(,) As Double Dim finaldata(,) As Double Dim tmpi As Integer

End Structure

Dim data As New List(Of wajah)

Sub addData(ByVal someface As List(Of Bitmap), ByVal nama As String)

Dim matrikskov(,) As Double = converttoimgKov(someface) Dim mean() As Double = matrikskov.Mean()

(6)

Dim evd = New EigenvalueDecomposition(cov) Dim eigenval() As Double = evd.RealEigenvalues Dim eigenvector(,) As Double = evd.Eigenvectors Dim urut(eigenvector.GetLength(1)) As Double

Dim nilaimax(eigenvector.GetLength(1) - 1) As Double Dim max As Double = -100

Dim tmpi As Integer = 0 Dim sum As Double = 0 'urutkan vektor

For i As Integer = 0 To eigenvector.GetLength(1) - 1 For j As Integer = 0 To eigenvector.GetLength(0) - 1 Application.DoEvents()

sum += Math.Round(eigenvector(j, i), 5) Next

urut(i) = sum nilaimax(i) = sum sum = 0

Next

Array.Sort(nilaimax)

For ii As Integer = 0 To nilaimax.Count - 1 For iii As Integer = 0 To urut.Count - 1 If urut(iii) = nilaimax(ii) Then

For j As Integer = 0 To eigenvector.GetLength(0) - 1 Dim tmp As Double

tmp = eigenvector(j, ii)

eigenvector(j, ii) = eigenvector(j, iii) eigenvector(j, iii) = tmp

Next Exit For End If Next Next

'Dim eigenvectorbaru(eigenvector.GetLength(0) - 1, eigenvector.GetLength(1) - 1) As Double

ComparerDirection.Descending)

Dim finaldata(,) As Double = dataadjust.Multiply(eigenvector)

For i As Integer = 0 To finaldata.GetLength(1) - 1 For j As Integer = 0 To finaldata.GetLength(0) - 1 Application.DoEvents()

sum += Math.Round(finaldata(j, i), 5) Next

If sum > max Then max = sum tmpi = i End If sum = 0 Next

Dim tmpdata As New wajah

tmpdata.matrikskovarian = matrikskov tmpdata.finaldata = finaldata

tmpdata.nama = nama tmpdata.tmpi = tmpi data.Add(tmpdata) End Sub

Function ambildata(ByVal index As Integer) As wajah If index > data.Count - 1 Then

(7)

Return data(index) End If

End Function

Function getratavektor() As Double(,)

Dim hasil(data(0).finaldata.GetLength(0) - 1, 0) As Double For j As Integer = 0 To data(0).finaldata.GetLength(0) - 1 Dim rata As Double = 0

For i As Integer = 0 To data.Count - 1 Dim tmpi As Integer = data(i).tmpi rata += data(i).finaldata(j, tmpi) Next

rata /= data.Count hasil(j, 0) = rata Next

Return hasil End Function

Function bandingwajah(ByVal WajahInputan As Bitmap) As String Dim hasil As String = ""

'inisialisasi gbr inputan

WajahInputan = Citra.grayscale(Citra.resize(WajahInputan)) Dim tmp2 As New List(Of Bitmap)

tmp2.Add(WajahInputan)

Dim matriks(,) As Double = converttoimgKov(tmp2) 'kurangi dengan rata rata matriks

Dim ratavektor(,) As Double = getratavektor()

Dim matrikpengurangan(,) As Double = matriks.Subtract(ratavektor)

'cari nilai eigen terkecil Dim min As Integer = 1000 Dim stringhasil As String = ""

For i As Integer = 0 To data.Count - 1 Dim total As Double = 0

Dim tmpi As Integer = data(i).tmpi

For j As Integer = 0 To matriks.GetLength(1) - 1 total += Math.Pow(matrikpengurangan(j, 0) - data(i).finaldata(j, tmpi), 2)

Next

total = Math.Sqrt(total)

stringhasil &= total & "==" & data(i).nama & vbNewLine If total < min Then

min = total

hasil = data(i).nama End If

Next

Dim nilaiambang As Integer = 100 If min < nilaiambang Then

Return "Login Diterima|" & hasil Else

Return "Login Di tolak" End If

'Return hasil & min & vbNewLine & stringhasil End Function

(8)

//UserControlDaftar

Imports Accord.Vision.Detection

Imports Accord.Vision.Detection.Cascades Imports AForge.Video

Imports AForge.Video.DirectShow Imports System.IO

Imports System.Drawing.Imaging

Imports System.Runtime.Serialization.Formatters.Binary

Public Class UserControlDaftar Dim w As Integer = 50

Dim AMBILWEBCAM As PictureBox

' Dim imgFrame As Image(Of Bgr, Byte) 'Dim vidCapture As Capture

'Dim imgGray As Image(Of Gray, Byte) Dim pctwajah As PictureBox

Dim gbr_Rata(,) As Double Dim gbrDipilih As Bitmap

Dim AppIdleAMBILWEBCAM As Object

Dim videoDevices As FilterInfoCollection Dim videosource As VideoCaptureDevice

Dim TampilVideo As AForge.Controls.VideoSourcePlayer Dim idM, idS, idSdh As Integer

Dim valM, valS, valSdh As Double Dim TMP_wajah, TMP_fitur As Bitmap

Dim videosourceplayer1 As New AForge.Controls.VideoSourcePlayer Dim _PctWajah() As PictureBox

Dim pctwajahpeng As PictureBox = New PictureBox Dim indexgbr As Integer = 0

Sub hidupkanWebcam(Tmp As PictureBox, TmpWajah As PictureBox, player As AForge.Controls.VideoSourcePlayer)

Try

AMBILWEBCAM = Tmp pctwajah = TmpWajah

TampilVideo = player videoDevices = New

FilterInfoCollection(FilterCategory.VideoInputDevice)

videosource = New VideoCaptureDevice(videoDevices(0).MonikerString)

TampilVideo.SignalToStop() TampilVideo.WaitForStop()

TampilVideo.VideoSource = videosource

TampilVideo.Start()

AddHandler Application.Idle, AddressOf AppIdle Catch ex As Exception

MessageBox.Show(ex.Message) End Try

End Sub

Sub matikanWebCam()

RemoveHandler Application.Idle, AddressOf AppIdle AMBILWEBCAM = Nothing

pctwajah = Nothing

(9)

TampilVideo.Stop() End Sub

Public Sub AppIdle(ByVal sender As System.Object, ByVal e As System.EventArgs)

AMBILWEBCAM.Image = TampilVideo.GetCurrentVideoFrame Try

Dim detector As HaarObjectDetector Dim cascade As New FaceHaarCascade

detector = New HaarObjectDetector(cascade, 30)

detector.SearchMode = ObjectDetectorSearchMode.Average detector.ScalingFactor = 1.5

detector.ScalingMode = ObjectDetectorScalingMode.GreaterToSmaller detector.UseParallelProcessing = True

detector.Suppression = 3

Dim faceObjects As Rectangle() = detector.ProcessFrame(AMBILWEBCAM.Image)

Dim g As Graphics = Graphics.FromImage(AMBILWEBCAM.Image) For Each face In faceObjects

Dim CropImage = New Bitmap(face.Width, face.Height) Using grp = Graphics.FromImage(CropImage)

grp.DrawImage(AMBILWEBCAM.Image, New Rectangle(0, 0, face.Width, face.Height), face, GraphicsUnit.Pixel)

End Using

pctwajah.Image = CropImage g.DrawRectangle(Pens.Red, face)

If Not IsNothing(pctwajahpeng.Image) Then TMP_wajah = New Bitmap(pctwajahpeng.Image) Dim gbrKirim As Bitmap = pctwajah.Image

End If Next

Catch ex As Exception

'TxtPesan.Text = "Error : " & (ex.Message) End Try

End Sub

Private Sub ButtonCapture_Click(sender As Object, e As EventArgs) Handles ButtonCapture.Click

If Not IsNothing(pctwajahpeng.Image) And indexgbr < 3 Then _PctWajah(indexgbr).Image = pctwajahpeng.Image

indexgbr += 1 End If

End Sub

Private Sub ButtonSimpan_Click(sender As Object, e As EventArgs) Handles ButtonSimpan.Click

If Not TextBoxSandi.Text = TextBoxSandiUlang.Text Then

MessageBox.Show("Password dan konfirmasi tidak sama", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

ElseIf (indexgbr < 3) Then

MessageBox.Show("Anda Belum Memasukkan 3 inputan wajah anda") ElseIf (TextBoxNama.Text = "" Or TextBoxSandi.Text = "" Or

TextBoxUID.Text = "") Then

(10)

Else

_listuser.Tambah(TextBoxUID.Text, TextBoxNama.Text, TextBoxSandi.Text, PictureBoxWajah1.Image, PictureBoxWajah2.Image, PictureBoxWajah3.Image)

simpanListUser() End If

End Sub

Private Sub UserControlDaftar_Load(sender As Object, e As EventArgs) Handles MyBase.Load

ReDim _PctWajah(2)

_PctWajah(0) = PictureBoxWajah1 _PctWajah(1) = PictureBoxWajah2 _PctWajah(2) = PictureBoxWajah3

hidupkanWebcam(PictureBoxWebcam, pctwajahpeng, videosourceplayer1) If File.Exists("ListUser") Then

LoadListUser() Else

_listuser = New listUser End If

End Sub

Private Sub ButtonKembali_Click(sender As Object, e As EventArgs) Handles ButtonKembali.Click

matikanWebCam() FormUtama.menuLogin() End Sub

End Class

//UserControlLogin

Imports Accord.Vision.Detection

Imports Accord.Vision.Detection.Cascades Imports AForge.Video

Imports AForge.Video.DirectShow Imports System.IO

Imports System.Drawing.Imaging Public Class UserControlLogin Dim w As Integer = 50

Dim AMBILWEBCAM As PictureBox

' Dim imgFrame As Image(Of Bgr, Byte) 'Dim vidCapture As Capture

'Dim imgGray As Image(Of Gray, Byte) Dim pctwajah As PictureBox

Dim gbr_Rata(,) As Double Dim gbrDipilih As Bitmap

Dim AppIdleAMBILWEBCAM As Object

Dim videoDevices As FilterInfoCollection Dim videosource As VideoCaptureDevice

Dim TampilVideo As AForge.Controls.VideoSourcePlayer Dim Namafile As String = "JarBackPro.net"

Dim idM, idS, idSdh As Integer Dim valM, valS, valSdh As Double Dim TMP_wajah, TMP_fitur As Bitmap

(11)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLogin.Click

'matikanWebCam() 'FormUtama.menuutama() Dim _pca As New PCA

Dim listdata As New List(Of Image)

For i As Integer = 0 To _listuser.getcount - 1 _pca.addData(_listuser.getlistuserimage(i), _listuser.getlistuser(i).Nama)

Next

Dim banding As String = _pca.bandingwajah(PctWajahPeng.Image) If banding.Split("|")(0) = "Login Diterima" Then

MsgBox(banding.Split("|")(0) & " sebagai " & banding.Split("|")(1)) username = banding.Split("|")(1)

matikanWebCam() FormUtama.menuutama() Else

MsgBox("Login Ditolak, Silahkan Coba Lagi") End If

End Sub

Sub hidupkanWebcam(Tmp As PictureBox, TmpWajah As PictureBox, player As AForge.Controls.VideoSourcePlayer)

Try

AMBILWEBCAM = Tmp pctwajah = TmpWajah

TampilVideo = player videoDevices = New

FilterInfoCollection(FilterCategory.VideoInputDevice)

videosource = New VideoCaptureDevice(videoDevices(0).MonikerString)

TampilVideo.SignalToStop() TampilVideo.WaitForStop()

TampilVideo.VideoSource = videosource

TampilVideo.Start()

AddHandler Application.Idle, AddressOf AppIdle Catch ex As Exception

MessageBox.Show(ex.Message) End Try

End Sub

Sub matikanWebCam()

RemoveHandler Application.Idle, AddressOf AppIdle AMBILWEBCAM = Nothing

pctwajah = Nothing

TampilVideo.SignalToStop() TampilVideo.WaitForStop() TampilVideo.Stop()

End Sub

Public Sub AppIdle(ByVal sender As System.Object, ByVal e As System.EventArgs)

AMBILWEBCAM.Image = TampilVideo.GetCurrentVideoFrame Try

Dim detector As HaarObjectDetector Dim cascade As New FaceHaarCascade

(12)

detector.SearchMode = ObjectDetectorSearchMode.Average detector.ScalingFactor = 1.5

detector.ScalingMode = ObjectDetectorScalingMode.GreaterToSmaller detector.UseParallelProcessing = True

detector.Suppression = 3

Dim faceObjects As Rectangle() = detector.ProcessFrame(AMBILWEBCAM.Image)

Dim g As Graphics = Graphics.FromImage(AMBILWEBCAM.Image) For Each face In faceObjects

Dim CropImage = New Bitmap(face.Width, face.Height) Using grp = Graphics.FromImage(CropImage)

grp.DrawImage(AMBILWEBCAM.Image, New Rectangle(0, 0, face.Width, face.Height), face, GraphicsUnit.Pixel)

End Using

pctwajah.Image = CropImage g.DrawRectangle(Pens.Red, face)

If Not IsNothing(PctWajahPeng.Image) Then TMP_wajah = New Bitmap(PctWajahPeng.Image) Dim gbrKirim As Bitmap = pctwajah.Image

End If Next

Catch ex As Exception

'TxtPesan.Text = "Error : " & (ex.Message) End Try

End Sub

Private Sub UserControlLogin_Load(sender As Object, e As EventArgs) Handles MyBase.Load

hidupkanWebcam(PctWebcamPeng, PctWajahPeng, videosourceplayer1) If File.Exists("ListUser") Then

LoadListUser() Else

_listuser = New listUser End If

End Sub

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click

matikanWebCam() FormUtama.Daftar() End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

FormLoginAlternatif.Show() End Sub

(13)

//UserControlLogin2

Imports Accord.Vision.Detection

Imports Accord.Vision.Detection.Cascades Imports AForge.Video

Imports AForge.Video.DirectShow Imports System.IO

Imports System.Drawing.Imaging Public Class UserControlLogin2 Dim w As Integer = 50

Dim AMBILWEBCAM As PictureBox

' Dim imgFrame As Image(Of Bgr, Byte) 'Dim vidCapture As Capture

'Dim imgGray As Image(Of Gray, Byte) Dim pctwajah As PictureBox

Dim gbr_Rata(,) As Double Dim gbrDipilih As Bitmap

Dim AppIdleAMBILWEBCAM As Object

Dim videoDevices As FilterInfoCollection Dim videosource As VideoCaptureDevice

Dim TampilVideo As AForge.Controls.VideoSourcePlayer Dim Namafile As String = "JarBackPro.net"

Dim idM, idS, idSdh As Integer Dim valM, valS, valSdh As Double Dim TMP_wajah, TMP_fitur As Bitmap

Dim videosourceplayer1 As New AForge.Controls.VideoSourcePlayer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLogin.Click

If Not PctWajahPeng.Image Is Nothing Then Dim _pca As New PCA

Dim listdata As New List(Of Image)

For i As Integer = 0 To _listuser.getcount - 1 _pca.addData(_listuser.getlistuserimage(i), _listuser.getlistuser(i).Nama)

Next

Dim banding As String = _pca.bandingwajah(PctWajahPeng.Image) If banding.Split("|")(0) = "Login Diterima" Then

MsgBox(banding.Split("|")(0) & " sebagai " & banding.Split("|")(1))

username = banding.Split("|")(1) matikanWebCam()

FormUtama.menuutama() Else

MsgBox("Login Ditolak, Silahkan Coba Lagi") End If

Else

MsgBox("Harus Ada Wajah Terdeteksi terlebih dahulu") End If

End Sub

Sub hidupkanWebcam(Tmp As PictureBox, TmpWajah As PictureBox, player As AForge.Controls.VideoSourcePlayer)

Try

AMBILWEBCAM = Tmp pctwajah = TmpWajah

TampilVideo = player videoDevices = New

(14)

videosource = New VideoCaptureDevice(videoDevices(0).MonikerString)

TampilVideo.SignalToStop() TampilVideo.WaitForStop()

TampilVideo.VideoSource = videosource

TampilVideo.Start()

AddHandler Application.Idle, AddressOf AppIdle Catch ex As Exception

MessageBox.Show(ex.Message) End Try

End Sub

Sub matikanWebCam()

RemoveHandler Application.Idle, AddressOf AppIdle AMBILWEBCAM = Nothing

pctwajah = Nothing

TampilVideo.SignalToStop() TampilVideo.WaitForStop() TampilVideo.Stop()

End Sub

Public Sub AppIdle(ByVal sender As System.Object, ByVal e As System.EventArgs)

AMBILWEBCAM.Image = TampilVideo.GetCurrentVideoFrame

End Sub

Private Sub UserControlLogin_Load(sender As Object, e As EventArgs) Handles MyBase.Load

hidupkanWebcam(PctWebcamPeng, PctWajahPeng, videosourceplayer1) If File.Exists("ListUser") Then

LoadListUser() Else

_listuser = New listUser End If

End Sub

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click

matikanWebCam() FormUtama.Daftar() End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

FormLoginAlternatif.Show() End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

PictureBox3.Image = AMBILWEBCAM.Image End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

Try

(15)

detector = New HaarObjectDetector(cascade, 30)

detector.SearchMode = ObjectDetectorSearchMode.Average detector.ScalingFactor = 1.5

detector.ScalingMode = ObjectDetectorScalingMode.GreaterToSmaller detector.UseParallelProcessing = True

detector.Suppression = 3

Dim faceObjects As Rectangle() = detector.ProcessFrame(PictureBox3.Image)

Dim g As Graphics = Graphics.FromImage(PictureBox3.Image) If faceObjects.Length = 0 Then

MsgBox("Tidak Ada wajah terdeteksi") Else

For Each face In faceObjects

Dim CropImage = New Bitmap(face.Width, face.Height) Using grp = Graphics.FromImage(CropImage)

grp.DrawImage(PictureBox3.Image, New Rectangle(0, 0, face.Width, face.Height), face, GraphicsUnit.Pixel)

End Using

pctwajah.Image = CropImage g.DrawRectangle(Pens.Red, face)

If Not IsNothing(PctWajahPeng.Image) Then TMP_wajah = New Bitmap(PctWajahPeng.Image) Dim gbrKirim As Bitmap = pctwajah.Image

End If Next

End If

Catch ex As Exception

'TxtPesan.Text = "Error : " & (ex.Message) End Try

End Sub End Class

//UserControlUtama

Imports System.IO

Imports System.Runtime.Serialization.Formatters.Binary Imports System.Security.AccessControl

Public Class UserControlUtama Dim _Listfolder As ListFolder

Sub kuncifolder(ByVal alamat As String)

Dim perintah As String = "Attrib +s +h +r " & ListView1.SelectedItems(0).Text

Shell(perintah)

(16)

fs.AddAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny))

File.SetAccessControl(alamat, fs) End Sub

Sub bukakuncifolder(ByVal alamat As String)

Dim fs As FileSystemSecurity = File.GetAccessControl(alamat) fs.RemoveAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny))

File.SetAccessControl(alamat, fs)

Dim perintah As String = "Attrib -s -h -r " & ListView1.SelectedItems(0).Text

Shell(perintah) End Sub

Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click

If ListView1.SelectedItems().Count > 0 Then kuncifolder(ListView1.SelectedItems(0).Text)

_Listfolder.setStatus(ListView1.SelectedItems(0).Index, "Terkunci") simpanListFolder()

tampilkankeListview() End If

End Sub

Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click

If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then

ListView1.Items.Add(FolderBrowserDialog1.SelectedPath.ToString) ListView1.Items(ListView1.Items.Count - 1).SubItems.Add("Tidak Terkunci")

_Listfolder.Tambah(FolderBrowserDialog1.SelectedPath.ToString, "Tidak Terkunci")

If File.Exists("ListFolder") Then File.Delete("ListFolder") End If

simpanListFolder() End If

End Sub

Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click

If Not ListView1.SelectedItems(0) Is Nothing Then _Listfolder.hapus(ListView1.SelectedItems(0).Index) simpanListFolder()

tampilkankeListview() End If

End Sub

Private Sub ToolStripButton4_Click(sender As Object, e As EventArgs) Handles ToolStripButton4.Click

If ListView1.SelectedItems().Count > 0 Then

bukakuncifolder(ListView1.SelectedItems(0).Text)

_Listfolder.setStatus(ListView1.SelectedItems(0).Index, "Tidak Terkunci")

(17)

End Sub

Private Sub UserControlUtama_Load(sender As Object, e As EventArgs) Handles MyBase.Load

If File.Exists("Listfolder") Then LoadListFolder()

tampilkankeListview() Else

_Listfolder = New ListFolder End If

End Sub

Sub simpanListFolder()

If File.Exists(username) Then File.Delete(username) End If

Dim FS As New FileStream(username, FileMode.Append) Dim BF As New BinaryFormatter

BF.Serialize(FS, _Listfolder) FS.Close()

End Sub

Sub LoadListFolder()

If File.Exists(username) Then

Dim FS As New FileStream(username, FileMode.Open) Dim BF As New BinaryFormatter

_Listfolder = BF.Deserialize(FS) FS.Close()

Else

_Listfolder = New ListFolder End If

End Sub

Sub tampilkankeListview() ListView1.Items.Clear()

For i As Integer = 0 To _Listfolder.jumlah - 1 ListView1.Items.Add(_Listfolder.getAlamat(i)) ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(_Listfolder.getStatus(i))

Next End Sub

Private Sub ToolStripLabel1_Click(sender As Object, e As EventArgs) Handles ToolStripLabel1.Click

FormUtama.menuLogin() End Sub

End Class

// Citra

Imports Accord.Imaging Module Citra

Function grayscale(ByVal img As Bitmap) As Bitmap

Dim filter As AForge.Imaging.Filters.Grayscale = New AForge.Imaging.Filters.Grayscale(0.2125, 0.7154, 0.0721) Dim grayImg As Bitmap = filter.Apply(img)

Return grayImg End Function

(18)

Dim filter As AForge.Imaging.Filters.ResizeBilinear = New AForge.Imaging.Filters.ResizeBilinear(30, 30)

Dim newimg As Bitmap = filter.Apply(img) Return newimg

End Function

Function threshold(ByVal img As Bitmap) As Bitmap

Dim filter As AForge.Imaging.Filters.Threshold = New AForge.Imaging.Filters.Threshold(100)

Dim newimg As Bitmap = filter.Apply(img) Return newimg

End Function

Function prapengolahan(ByVal img As Bitmap) As Bitmap Return threshold(grayscale(resize(img)))

End Function

Function imgTovector(ByVal img As Bitmap) As Double() Dim hasil(img.Width * img.Height) As Double Dim pos As Integer = 0

For i As Integer = 0 To img.Height - 1 For j As Integer = 0 To img.Width - 1 hasil(pos) = img.GetPixel(i, j).R Next

Next

Return hasil End Function

Function converttoimgKov(ByVal img As List(Of Bitmap)) As Double(,) Dim hasil(img(0).Width * img(0).Height, img.Count - 1) As Double For i As Integer = 0 To img.Count - 1

Dim tmpvektor() As Double = imgTovector(img(i)) For j As Integer = 0 To tmpvektor.Length - 1 hasil(j, i) = tmpvektor(j)

Next Next

Return hasil End Function

Referensi

Dokumen terkait

 Setelah membaca teks, siswa mampu menunjukkan contoh tindakan yang dapat dilakukan manusia terhadap daur hidup hewan dan tumbuhan dengan benar..  Setelah membaca teks

Dengan demikian disimpulkan bahwa penerapan model pembelajaran kooperatif tipe Numbered Heads Together (NHT) pada materi gerak tumbuhan dapat mencapai target motivasi

Banyak hal yang kemudian berubah di abad 21 ini, percepatan di bidang ilmu pengetahuan dan teknologi, sistem komunikasi seperti mudahnya akses internet menjadi salah satu ciri abad

Jenis tanah ini berasal dari bahan induk organik seperti dari hutan rawa atau rumput rawa, dengan ciri dan sifat: tidak terjadi deferensiasi horizon secara jelas, ketebalan lebih

Kegiatan penelitian mendukung pengembangan ilmu serta terapannya. Dalarn ha1 ini, Lembaga Penelitian Universitas Negeri Padang berusaha mendorong dosen untuk melakukan

Ikatan kovalen terjadi karena adanya penggunaan elektron secara bersama dari atom yang satu ke atom yang lainnya. Ikatan logam, interaksi terjadi karena adanya

9 Harga shampoo pantene yang saya ketahui selalu setabil tidak berubah-ubah 10 Produk Pantene memiliki banyak pilihan jenis yang dapat saya pilih sesuai dengan

Tiga tahapan penting dalam pembuatan tempe yaitu (1) hidrasi dan pengasaman biji kedelai dengan direndam beberapa lama (satu malam); (2) pemanasan biji kedelai, yaitu dengan