Wednesday, November 18, 2015

simple facedetection open cv visual studio

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"

//fungsi deteksi wajah
void detect_and_draw(IplImage* img){
 //inisialisasi
 CvHaarClassifierCascade *cascade=0;
 CvMemStorage *storage=0;

 IplImage* gray=img;

 //baca file xml u/ image detection
 if(!cascade){
  char * file="C:/OpenCV2.1/data/haarcascades/haarcascade_frontalface_alt.xml";
  cascade=(CvHaarClassifierCascade*) cvLoad(file, 0, 0, 0);
  storage=cvCreateMemStorage(0);
 }

 //deteksi wajah
 CvSeq* faces=cvHaarDetectObjects(
  gray,
  cascade,
  storage,
  1.1,
  3,
  CV_HAAR_DO_CANNY_PRUNING,
  cvSize(10, 10));

 int i;

 //menggambar kotak merah pd bagian wajah yg ditemukan
 for(i=0; i<(faces ? faces->total : 0) ; i++){
  CvRect* r=(CvRect*) cvGetSeqElem(faces, i);
  cvRectangle(img,
   cvPoint(r->x, r->y),
   cvPoint(r->x + r->width, r->y + r->height),
   CV_RGB(255, 0, 0),
   1, 8, 0
   );
 }

 //menampilkan gambar hasil deteksi
 cvNamedWindow("hasil");
 cvShowImage("hasil", img);

 cvWaitKey(0);
}

int main(array<System::String ^> ^args){
 //load image asli
 const char* filename="dank.jpg";
 IplImage* img=cvLoadImage(filename);

 //panggil fungsi
 detect_and_draw(img);
}

Monday, November 2, 2015

Red tracking color MATLAB


programnya.....


close all;
clear all;
clc;

% spesifikasi format webcam yang digunakan
vid=videoinput('winvideo',1,'YUY2_320x240');
set(vid,'TriggerRepeat',Inf);
vid.returnedcolorspace='rgb';
vid.FrameGrabInterval=2;

start(vid)

while(vid.FramesAcquired<=200)
    
    % mengambil citra dari video
    data = getsnapshot(vid);
    % Untuk mendeteksi objek berwarna merah yang bergerak
    % Diperlukan pengurangan komponen warna merah 
    % Mengekstrak komponen warna merah dari citra grayscale 
    diff_im = imsubtract(data(:,:,1), rgb2gray(data));
    % Filterisasi menggunakan filter median untuk menghilangkan noise
    diff_im = medfilt2(diff_im, [3 3]);
    % Konversi grayscale ke biner
    diff_im = im2bw(diff_im,0.18);
    % Menghilangkan semua pixel kurang dari 300 px
    diff_im = bwareaopen(diff_im,300);
    % Memberi label semua komponen yang terkoneksi pada citra
    bw = bwlabel(diff_im, 8);

    % Berikut ini adalah sintak untuk mengkarakterisasi tiap bagian label.
    stats = regionprops(bw, 'BoundingBox', 'Centroid');
    
    % Menampilkan citra hasil snapshot
    imshow(data)
    
    hold on
    
    % Berikut adalah logika loop untuk membuat box kotak yang mengitari objek warna merah.
    for object = 1:length(stats)
        bb = stats(object).BoundingBox;
        bc = stats(object).Centroid;
        rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
        plot(bc(1),bc(2), '-m+')
        bc(2)
        a=text(bc(1)+15,bc(2),strcat('X:',num2str(round(bc(1))),'Y:',num2str(round(bc(2)))));
        set(a,'FontName','Arial','FontWeight','bold','FontSize',12,'Color','red');
    end
    
    hold off
end
stop(vid)



Skin face detection MATLAB


PROGRAM
% spesifikasi format webcam yang digunakan
vid = videoinput('winvideo',1,'YUY2_320x240');
set(vid, 'FramesPerTrigger', Inf);
set(vid, 'ReturnedColorspace', 'rgb')
vid.FrameGrabInterval = 5;

% memulai program  
start(vid)


while(vid.FramesAcquired<=100)

data = getsnapshot(vid);
diff_im = imsubtract(data(:,:,1), rgb2gray(data));
diff_im = medfilt2(diff_im, [3 3]);
diff_im = imadjust(diff_im);
level = graythresh(diff_im);
bw = im2bw(diff_im,level);
BW5 = imfill(bw,'holes');
bw6 = bwlabel(BW5, 8);
stats = regionprops(bw6,['basic']);
[N,M]=size(stats);
if (bw==0)
        break;
else

     tmp = stats(1);
for i = 2 : N
      if stats(i).Area > tmp.Area
        tmp = stats(i);
      end
   
end
bb = tmp.BoundingBox;
bc = tmp.Centroid;

imshow(data)
hold on
rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
hold off
end
end

stop(vid);

% Flush all the image data stored in the memory buffer.
flushdata(vid);

% Clear semua variabel
clear all



MATLAB Tracking object



programnya

close all;
clear all;
clc;

% spesifikasi format webcam yang digunakan
vid=videoinput('winvideo',1,'YUY2_320x240');
set(vid,'TriggerRepeat',Inf);
vid.returnedcolorspace='rgb';
vid.FrameGrabInterval=2;

start(vid)

while(vid.FramesAcquired<=100)% frame harus lebih besar dari tic toc
    tic
    for f=1:50;% nilai ini harus lebih kecil dari frame
    % mengambil citra dari video
    data = getsnapshot(vid);
    %proses flip agar posisi citra berhadapan dengan objek
    R=data(:,:,1);
    R=fliplr(R);
    G=data(:,:,2);
    G=fliplr(G);
    B=data(:,:,3);
    B=fliplr(B);
    data=cat(3,R,G,B);
    % Untuk mendeteksi objek berwarna merah yang bergerak
    % Diperlukan pengurangan komponen warna merah
    % Mengekstrak komponen warna merah dari citra grayscale
    diff_im = imsubtract(data(:,:,1), rgb2gray(data));
    % Filterisasi menggunakan filter median untuk menghilangkan noise
    diff_im = medfilt2(diff_im, [3 3]);
    % Konversi grayscale ke biner
    diff_im = im2bw(diff_im,0.18);
    % Menghilangkan semua pixel kurang dari 300 px
    diff_im = bwareaopen(diff_im,300);
    % Memberi label semua komponen yang terkoneksi pada citra
    bw = bwlabel(diff_im, 8);

    % Berikut ini adalah sintak untuk mengkarakterisasi tiap bagian label.
    stats = regionprops(bw, 'BoundingBox', 'Centroid');
   
    % Menampilkan citra hasil snapshot
    imshow(data)
   
    hold on
   
    % Berikut adalah logika loop untuk membuat box kotak yang mengitari objek warna merah.
    for object = 1:length(stats)
        bb = stats(object).BoundingBox;
        bc = stats(object).Centroid;
        rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
        plot(bc(1),bc(2), '-m+')
        sumbux(f)=bc(1);
        sumbuy(f)=bc(2);
       
        a=text(bc(1)+15,bc(2),strcat('X:',num2str(round(bc(1))),'Y:',num2str(round(bc(2)))));
        set(a,'FontName','Arial','FontWeight','bold','FontSize',12,'Color','red');
    end
   
    hold off
    end
end
stop(vid)
t=toc;
t1=t/50:t/50:t

% menampilkan grafik gerak objek
figure
subplot(3,1,1)
plot(t1,sumbux,'r-')
xlabel('Waktu t(s)')
ylabel('Kordinat x')
title('Kordinat x terhadap t','fontsize',14,'fontname','Arial')
subplot(3,1,2)
plot(t1,sumbuy,'r-')
xlabel('Waktu t(s)')
ylabel('Kordinat y')
title('Kordinat y terhadap t','fontsize',14,'fontname','Arial')
subplot(3,1,3)
plot(sumbux,sumbuy,'r-')
xlabel('Kordinat x')
ylabel('Kordinat y')
title('Kordinat y vs x','fontsize',14,'fontname','Arial')


Program GUI matlab robot PC




programnya.....


function varargout = guivisiBOT(varargin)
% GUIVISIBOT MATLAB code for guivisiBOT.fig
%      GUIVISIBOT, by itself, creates a new GUIVISIBOT or raises the existing
%      singleton*.
%
%      H = GUIVISIBOT returns the handle to a new GUIVISIBOT or the handle to
%      the existing singleton*.
%
%      GUIVISIBOT('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in GUIVISIBOT.M with the given input arguments.
%
%      GUIVISIBOT('Property','Value',...) creates a new GUIVISIBOT or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before guivisiBOT_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to guivisiBOT_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help guivisiBOT

% Last Modified by GUIDE v2.5 19-May-2014 12:35:31

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @guivisiBOT_OpeningFcn, ...
                   'gui_OutputFcn',  @guivisiBOT_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Program Opening Video Webcam 
function guivisiBOT_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to guivisiBOT (see VARARGIN)

% Choose default command line output for guivisiBOT
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);


% UIWAIT makes guivisiBOT wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = guivisiBOT_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Program Perintah BELOK KIRI
function kiri_Callback(hObject, eventdata, handles)
% hObject    handle to kiri (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global s
fwrite(s,'Z');



% --- Program perintah BELOK KANAN
function kanan_Callback(hObject, eventdata, handles)
% hObject    handle to kanan (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global s
fwrite(s,'A');



% --- Program perintah MAJU
function maju_Callback(hObject, eventdata, handles)
% hObject    handle to maju (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global s
fwrite(s,'K');



% --- Program perintah MUNDUR
function mundur_Callback(hObject, eventdata, handles)
% hObject    handle to mundur (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global s
fwrite(s,'M');


% --- Program perintah DIAM
function diam_Callback(hObject, eventdata, handles)
% hObject    handle to diam (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global s
fwrite(s,'O');



function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double


% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit2_Callback(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit2 as text
%        str2double(get(hObject,'String')) returns contents of edit2 as a double


% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on button press in koneksi.
function koneksi_Callback(hObject, eventdata, handles)
% hObject    handle to koneksi (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global s
myform=guidata(gcbo);
aa=get(myform.edit1,'String');
bb=str2double(get(myform.edit2,'String'));
s=serial(aa,'Baudrate',bb,'DataBits',8,'StopBits',1,'InputBufferSize',16000);
fopen(s);



% --- Executes on button press in diskoneksi.
function diskoneksi_Callback(hObject, eventdata, handles)
% hObject    handle to diskoneksi (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global s
clear s;
close;




ROBOT KONTROL KOMPUTER arduino



programnya .....

// ROBOT KONTROL KOMPUTER

// Definisi awal

int kiriA = 9;
int kiriB = 6;
int kananA = 5;
int kananB = 3;

void setup()
{
  Serial.begin(9600);
  pinMode(kiriA,OUTPUT);
  pinMode(kiriB,OUTPUT);
  pinMode(kananA,OUTPUT);
  pinMode(kananB,OUTPUT);
}

void loop()
{
  if(Serial.available()>0)
  {
    byte dataku=Serial.read();
    if (dataku=='M')
    {
      digitalWrite(kiriA,HIGH);
      digitalWrite(kiriB,LOW);
      digitalWrite(kananA,HIGH);
      digitalWrite(kananB,LOW);
      Serial.println("ROBOT MUNDUR");
    }
    else if (dataku=='Z')
    {
      digitalWrite(kiriA,LOW);
      digitalWrite(kiriB,HIGH);
      digitalWrite(kananA,LOW);
      digitalWrite(kananB,HIGH);
      Serial.println("ROBOT MAJU");
    }
    else if (dataku=='Y')
    {
      digitalWrite(kiriA,LOW);
      digitalWrite(kiriB,HIGH);
      digitalWrite(kananA,HIGH);
      digitalWrite(kananB,LOW);
      Serial.println("ROBOT BELOK KIRI");
    }
    else if (dataku=='X')
    {
      digitalWrite(kiriA,HIGH);
      digitalWrite(kiriB,LOW);
      digitalWrite(kananA,LOW);
      digitalWrite(kananB,HIGH);
      Serial.println("ROBOT BELOK KANAN");
    }
    else
    {
      digitalWrite(kiriA,LOW);
      digitalWrite(kiriB,LOW);
      digitalWrite(kananA,LOW);
      digitalWrite(kananB,LOW);
      Serial.println("ROBOT DIAM");
    }
  }
 
}