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
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
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
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
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()
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
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
//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
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
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
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
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
//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
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
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)
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")
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
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