Anda di halaman 1dari 5

Menginstall OpenCV

Pertama, Anda perlu mencari file setup yang cocok untuk sistem operasi yang Anda gunakan.
Saya merasakan menginstall OpenCV merupakan bagian tersulitnya. Jika Anda mengalami
error aneh atau yang tak dapat dijelaskan, itu mungkin karena kelas pustaka (library classes)
ada yang kurang/missing, perbedaan arsitektur 32/64bit, dll. Saya menemukan cara termudah
untuk menggunakan OpenCV adalah menggunakan Linux, baik langsung maupun
menggunakan virtual machine dan menginstall OpenCV dari awal.
Cara menginstall OpenCV untuk Python pada Linux berbasis Debian (Ubuntu / Raspbian)
pada Raspberry Pi misalnya, cukup gunakan perintah $ sudo apt-get install python-opencv
Setelah terinstall, Anda bisa mengetes apakah sudah mau atau tidak dengan membuka sesi
Python dan mengetik:
?
1$ python
2
import cv2
3>>>
>>>
4
Jika tidak menemukan pesan error, Anda bisa lanjut ke tahap berikutnya.

Mengertikan kodenya
Mari bahas satu persatu kodenya, yang mana dapat Anda unduh melalui repo. Ambil skrip
face_detec.py, gambar abba.png, dan file cascade haarcascade_frontalface_default.xml.
Taruh dalam satu folder.
?
1# Get user supplied values
2imagePath = sys.argv[1]
3cascPath = sys.argv[2]
Pertama Anda lewatkan nama file gambar dan cascade ke program
face_detec.py menggunakan command-line argument. Kita akan menggunakan gambar Abba
begitu juga dengan cascade untuk mendeteksi wajah yang disediakan oleh OpenCV.
?
1# Create the haar cascade
2faceCascade = cv2.CascadeClassifier(cascPath)
Sekarang kita membuat cascade-nya dan menginisialisasinya dengan cascade wajah kita. Ini
akan memuat cascade wajah ke dalam memori sehingga siap digunakan. Ingat, cascade hanya
sebuah file XML yang berisi data untuk mendeteksi wajah.
?

1# Read the image


2image = cv2.imread(imagePath)
3gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
Disini kita membaca gambarnya dan merubah ke grayscale. Banyak operasi pada OpenCV
dilakukan dalam mode grayscale (hitam putih/abu).
?
1
# Detect faces in the image
2faces = faceCascade.detectMultiScale(
3
gray,
scaleFactor=1.1,
4
minNeighbors=5,
5
minSize=(30, 30),
6
flags = cv2.cv.CV_HAAR_SCALE_IMAGE
7)
8
Fungsi ini mendeteksi adalah fungsi deteksi wajah yang sebenarnya - dan merupakan bagian
kunci dari kode kita, jadi mari lanjut ke opsinya:
1. Fungsi detectMultiScale merupakan fungsi umum yang mendeteksi obyek. Karena
kita memanggilnya pada cascade wajah, itulah yang akan ia deteksi. Opsi pertama
adalah sebuah variabel citra dalam mode grayscale.
2. Kedua adalah scaleFactor. Karena beberapa wajah mungkin lebih dekat ke kamera,
wajah tersebut akan terlihat lebih besar daripada yang berada dibelakang. Scale factor
akan mengkompensasikan untuk hal ini.
3. Algoritma pendeteksian menggunakan window bergerak untuk mendeteksi obyek.
minNeighbors mendefinisikan seberapa banyak obyek yang terdeteksi di dekat yang
sekarang sebelum fungsi menyatakan menemukan wajah. minSize, sementara itu,
memberikan ukuran dari setiap window.

Saya menggunakan nilai yang umum digunakan untuk


field tersebut. Dalam dunia nyata, Anda bisa
bereksperimen dengan nilai yang berbeda untuk window
size, scale factor dll., hingga Anda menemukan yang
paling bagus.
Fungsi tersebut mereturn daftar persegi dimana pada bagian tersebut terdapat wajah.
Selanjutnya, kita akan melakukan perulangan untuk mencatat dimana saja fungsi
telah menemukan sesuatu.
?
1print "Found {0} faces!".format(len(faces))
2
3# Draw a rectangle around the faces
4for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
5

Fungsi ini mereturn 4 nilai: lokasi x dan y dari segi empat, dan lebar dan tinggi dari segi
empat (w, h).
Kita menggunakan nilai tersebut untuk menggambar segi empat menggunakan fungsi built-in
rectangle().

Memeriksa hasilnya
Mari kita coba dengan gambar Abba yang telah diunduh tadi:
?
1$ python face_detect.py abba.png haarcascade_frontalface_default.xml

Foto diatas berhasil. Bagaimana dengan foto lain:

Nahh... itu bukan wajah. Mari kita coba lagi. Saya mengganti parameternya dan menemukan
bahwa mengubah scaleFactor nya menjadi 1.2 dapat menyingkirkan wajah yang salah.

Apa yang terjadi ? Baik, foto yang pertama diambil cukup dekat dengan kamera berkualitas
tinggi. Yang kedua terlihat seperti diambil dari jarak jauh dan kemungkinan menggunakan
kamera HP. Inilah mengapa scaleFactor nya mesti dimodifikasi. Seperti yang saya katakan,
Anda perlu men-setup algoritmanya pada kasus per kasus untuk menghindari false positif.

Berhati-hatilah karena ini berdasarkan pada pembelajaran oleh mesin, hasilnya tidak akan
pernah 100% akurat. Anda akan mendapat hasil yang cukup bagus pada kebanyakan kasus,
tapi kadang-kadang algoritmanya juga mengidentifikasi obyek yang salah sebagai wajah.
Baik, demikian ulasan singkatnya. Kode finalnya dapat diambil disini. Selamat mencoba dan
semoga bermanfaat.

Anda mungkin juga menyukai