Wednesday, May 27, 2015

Salam Otomasi...

Gambar 1. Hasil Color Tracing dengan metode color threshold

Kali ini saya akan menjelaskan mengenahi object tracking menggunakan library OpenCV pada Raspberry Pi. Terlebih dahulu device kamera anda harus dapat terdeteksi oleh raspberry serta anda harus sudah menanam Library OpenCV pada respberry anda. Untuk cara instalasi dapat di lihat disini.Untuk detail algoritma pemrograman image di raspberry dapat dilihat pada gambar 2. Dan apabila teman-teman ingin belajar juga color tracking menggunakan OpenCV pada C++ dapat anda pelajari disini serta sudah saya lengkapi source codenya.


Gambar 2. Algoritma pemrograman


jika semua library dan komponen device sudah terdeteksi dan siap di jalankan maka anda dapat langsung menuju ke program utama, program tracing warna yang saya gunakan adalah dengan menggunakan bahasa pemrograman python. adapun algoritma dari pemrosesan citra sehingga didapatkan posisi dari benda yang di tracking dapat dilihat pada gambar 3.


Gambar 3. Algoritma Object Tracking In Raspberry and Open CV

Nah.... dari algoritma di atas kalau saya konversi menjadi bahasa pemrograman python maka dapat dilihat pada list program dibawah ini.

#========================= program python=================================
import cv2.cv as cv                 #import library openCV
import smbus                        #import library I2C

bus = smbus.SMBus(1)
address = 0x04                      #Alamat Register I2C

def sendData(value):                #Sub program kirim data
    bus.write_byte(address, value)
    # bus.write_byte_data(address, 0, value)
    return -1

def readData():                     #Sub program terima data i2c
    state = bus.read_byte(address)
    # number = bus.read_byte_data(address, 1)
    return state
def ColorProcess(img): #Sub program pengolahan citra
    # returns thresholded image
    imgHSV = cv.CreateImage(cv.GetSize(img), 8, 3)
    # converts BGR image to HSV

    cv.CvtColor(img, imgHSV, cv.CV_BGR2HSV)

    imgProcessed = cv.CreateImage(cv.GetSize(img), 8, 1)

    # converts the pixel values lying within the range to 255 and stores it in the destination

    cv.InRangeS(imgHSV, (100, 94, 84), (109, 171, 143), imgProcessed)
    return imgProcessed

def main():

    # captured image size, change to whatever you want

    width = 320

    height = 240

    capture = cv.CreateCameraCapture(0)

    # Over-write default captured image size
    cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_WIDTH,width)
    cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_HEIGHT,height)

    cv.NamedWindow( "output", 1 )

    cv.NamedWindow( "processed", 1 )

    while True:

        frame = cv.QueryFrame(capture)

        cv.Smooth(frame, frame, cv.CV_BLUR, 3)


        imgColorProcessed = ColorProcess(frame)

        mat = cv.GetMat(imgColorProcessed)


        # Calculating the moments

        moments = cv.Moments(mat, 0)

        area = cv.GetCentralMoment(moments, 0, 0)

        moment10 = cv.GetSpatialMoment(moments, 1, 0)

        moment01 = cv.GetSpatialMoment(moments, 0,1)


        # Finding a big enough blob

        if(area > 60000):


            # Calculating the center postition of the blob

            posX = int(moment10 / area)

            posY = int(moment01 / area)


            # check slave status and send coordinates

            state = readData()

            if state == 1:

                sendData(posX)

                sendData(posY)

                print 'x: ' + str(posX) + ' y: ' + str(posY)


        # update video windows

        cv.ShowImage("processed", imgColorProcessed)

        cv.ShowImage("output", frame)


        if cv.WaitKey(10) >= 0:

            break

    return;


if __name__ == "__main__":
   main()

#===================================================================

ini adalah video hasil dari image processing dari program yang telah saya buat diatas.






  

10 komentar:

  1. terima kasih mas ilmu bermanfaat sekali :) (y)

    ReplyDelete
  2. ijin pake source kode python.a dan saya pratikan langsung

    ReplyDelete
  3. sudah saya coba mas tapi kamera jadi berhenti lag ketika pertama kali di run entah kenapa

    ReplyDelete
    Replies
    1. coba d cek import open cvnya apa sudah terdeteksi?

      Delete
    2. mas cara cek import open cvny gimna ?

      Delete
  4. This comment has been removed by the author.

    ReplyDelete
  5. Sorry bro. Can i have your Arduino and Python code? I'm new to this.
    My email: 12bconfessions@gmail.com. Many thanks.

    ReplyDelete
    Replies
    1. i have put in my post here for python code

      Delete
  6. Mas boleh sya mintak koding program arduino?

    ReplyDelete