Anda di halaman 1dari 11

TUGAS PEMROGRAMAN KOMPUTER

KOMPUTER VISION PADA C++

OLEH
Nama

:REFDINAL F

No.Bp

:1210952005

Dosen Pengampu : Zaini, Ph.D

JURUSAN TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS ANDALAS
PADANG
2016

Computer

Vision

(Visi

Komputer)

sering

didefinisikan

sebagai salah satu cabang ilmu pengetahuan yang mempelajari


bagaimana komputer dapat mengenali obyek yang diamati atau
diobservasi. Arti dari Computer Vision adalah ilmu dan teknologi
mesin yang melihat, di mana mesin mampu mengekstrak
informasi dari gambar yang diperlukan untuk menyelesaikan
tugas tertentu. Sebagai suatu disiplin ilmu, visi komputer
berkaitan dengan teori di balik sistem buatan bahwa ekstrak
informasi dari gambar. Data gambar dapat mengambil banyak
bentuk, seperti urutan video, pandangan dari beberapa kamera,
atau data multi-dimensi dari scanner medis. Sebagai disiplin
teknologi, Computer Vision berusaha untuk menerapkan teori
dan model untuk pembangunan sistem.

OpenCV
OpenCV adalah sebuah library open source C++ untuk
prosessing image dan komputer vision. Awalnya dikembangkan
oleh Intel dan sekarang didukung oleh Willow Garage. Aplikasi ini
gratis digunakan untuk kegunaan komersial dan non komersial.
Karena itu tidak wajib untuk aplikasi openCV kita untuk dipublish.
OpenCV merupakan library yang memiliki banyak fungsi yg pada
dasarnya untuk realtime image processing. Sekarang memiliki
ratusan image processing dan komputer vision algoritma yg
dikembangkan
Fitur Utama

Realtime processing image dan komputer vision

Interface utama dari openCV adalah C++

Ada juga dengan C, Phton dan Java

Opn CV dapat digunakan pada Windows, Android , Linux


Mac dan iOS

Dioptimalkan Untuk Processor Intel

Program Mendeteksi Sebuah Object Berwarna


#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
VideoCapture cap(0); //mengambil video dari camera
if ( !cap.isOpened() ) // untuk mengecek camera yg digunakan
{
cout << "Cannot open the web cam" << endl;
return -1;
}
namedWindow("Control", CV_WINDOW_AUTOSIZE); //membuat sebuah window
dengan nama Control
int iLowH = 0;
int iHighH = 179;
int iLowS = 0;
int iHighS = 255;
int iLowV = 0;
int iHighV = 255;
//Membuat trackbar di Control Window
cvCreateTrackbar("LowH", "Control", &iLowH, 179); //matrik HUE yang
merepresentasikan warna
cvCreateTrackbar("HighH", "Control", &iHighH, 179);
cvCreateTrackbar("LowS", "Control", &iLowS, 255); //matrik Saturation
merepresentasikan jumlah warna yg dicampur dengan warna putih
cvCreateTrackbar("HighS", "Control", &iHighS, 255);
cvCreateTrackbar("LowV", "Control", &iLowV, 255); //matrik Value
merepresentasikan jumlah warna yg dicampur dengan warna putih
cvCreateTrackbar("HighV", "Control", &iHighV, 255);
while (true)
{
Mat imgOriginal;
bool bSuccess = cap.read(imgOriginal); // membaca frame baru dari video

if (!bSuccess) //if not success, break loop


{
cout << "Cannot read a frame from video stream" << endl;
break;
}
Mat imgHSV;
cvtColor(imgOriginal, imgHSV, COLOR_BGR2HSV); //mengkonversi frame yg
didapat ke format HSV
Mat imgThresholded;
inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV),
imgThresholded); //threshold gambar yg didapat
//menghialngkan object kecil pada gambar
erode(imgThresholded, imgThresholded,
getStructuringElement(MORPH_ELLIPSE, Size(5, 5)) );
dilate( imgThresholded, imgThresholded,
getStructuringElement(MORPH_ELLIPSE, Size(5, 5)) );
//mengisi lubang kecil pada gambar
dilate( imgThresholded, imgThresholded,
getStructuringElement(MORPH_ELLIPSE, Size(5, 5)) );
erode(imgThresholded, imgThresholded,
getStructuringElement(MORPH_ELLIPSE, Size(5, 5)) );
imshow("Thresholded Image", imgThresholded); //show the thresholded image
imshow("Original", imgOriginal); //show the original image
if (waitKey(30) == 27) //wait for 'esc' key press for 30ms. If 'esc' key is pressed,
break loop
{
cout << "esc key is pressed by user" << endl;
break;
}
}
return 0;
}

Penjelasan Program
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

Ini merupakan file header dari program


using namespace cv;
using namespace std;

fungsi cv:: dan std::


int main( int argc, char** argv )

untuk menghitung dan menyimpan argumen yg diberikan pada program


utama
VideoCapture cap(0);

untuk mengambil video dari kamera pada saat bernilai (0), maka akan
menggunakan kamera default, dan bernilai (1) maka akan menggunakan
kamera lain
if ( !cap.isOpened() )
{
cout << "Cannot open the web cam" << endl;
return -1;
}

fungsi jika kamera tidak dapat dibuka maka akan menampilkan pesan
"Cannot open the web cam"
namedWindow("Control", CV_WINDOW_AUTOSIZE);

membuat sebuah window dengan nama "Control"


int iLowH = 0;
int iHighH = 179;
int iLowS = 0;
int iHighS = 255;
int iLowV = 0;
int iHighV = 255;

deklarasi variabel untuk window control yang berisi trackbar


cvCreateTrackbar("LowH", "Control", &iLowH, 179);
cvCreateTrackbar("HighH", "Control", &iHighH, 179);

membuat trackbar untuk variabel HSV( yaitu variabel yg


merepresentasikan warna )

cvCreateTrackbar("LowS", "Control", &iLowS, 255);


cvCreateTrackbar("HighS", "Control", &iHighS, 255);

membuat trackbar untuk variabel HSV( yaitu variabel yg


merepresentasikan jumlah warna yang bercampur dengan putih )
cvCreateTrackbar("LowV", "Control", &iLowV, 255);
cvCreateTrackbar("HighV", "Control", &iHighV, 255);

membuat trackbar untuk variabel HSV( yaitu variabel yg


merepresentasikan jumlah warna yang bercampur dengan hitam )
Mat imgOriginal;
bool bSuccess = cap.read(imgOriginal); // membaca frame baru dari video
if (!bSuccess) //if not success, break loop
{
cout << "Cannot read a frame from video stream" << endl;
break;
}

membuat matrix dengan nama imgOriginal, dan membaca frame baru


dari kamera, dan jika gagal maka akan muncul pesan "Cannot read a frame
from video stream"

Mat imgHSV;
cvtColor(imgOriginal, imgHSV, COLOR_BGR2HSV); //mengkonversi frame yg
didapat ke format HSV
Mat imgThresholded;
inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV),
imgThresholded); //threshold gambar yg didapat

membuat matrik imgHSV dan mengkonversi frame yg telah didapat dari


matrik original ke format HSV dan threshold gambar yg didapat
erode(imgThresholded, imgThresholded,
getStructuringElement(MORPH_ELLIPSE, Size(5, 5)) );
dilate( imgThresholded, imgThresholded,
getStructuringElement(MORPH_ELLIPSE, Size(5, 5)) );

menghilangkan objek-objrk kecil pada gambar

dilate( imgThresholded, imgThresholded,


getStructuringElement(MORPH_ELLIPSE, Size(5, 5)) );
erode(imgThresholded, imgThresholded,
getStructuringElement(MORPH_ELLIPSE, Size(5, 5)) );

mengisi lubang kecil pada gambar


if (waitKey(30) == 27)
{
cout << "esc key is pressed by user" << endl;
break;
}
}
return 0;

fungsi untuk menahan tampilan hingga tombol escape ditekan

Nilai HUE dari warna dasar


o

Orange 0-22

Yellow 22- 38

Green 38-75

Blue 75-130

Violet 130-160

Red 160-179

Berikut hasil dari deteksi benda berwarna


1. Gelas berwarna Ungu (HUE = 135)

2. Gelas Berwarna Biru (HUE = 90)

3. Alpukat (Hue = 10)

Daftar Pustaka
Fernando, Shermal. 2013. Read and Display Image. http://opencvsrf.blogspot.co.id/2010/09/object-detection-using-colorseperation.html Diakses pada :13/06/16 ;17.36

Anda mungkin juga menyukai