Langsung ke konten utama

OpenCV Tutorial - Membuat Efek Negative

OpenCV merupakan suatu library yang menyediakan banyak fitur-fitur menarik. Salah satunya adalah membuat efek negative pada citra. Namun pada postingan ini, saya tidak akan menjelaskan cara melakukannya menggunakan library OpenCV secara langsung, saya akan membagi cara bagaimana melakukannya secara MANUAL. Ini sih sebenarnya tuntutan kuliah, hehe ;)

Negative Image
Negative Image




Berikut ini adalah kodingannya

#include 
#include 
#include 

using namespace std;
using namespace cv;


int main(int argc, char** argv)
{

    CvMat *cvMat = cvLoadImageM("cameraman.jpg", CV_LOAD_IMAGE_GRAYSCALE);
    for (int i = 0;i< cvMat->rows; i++)
    {
        for (int j=0;j<cvmat->cols;j++)
        {
            cvSetReal2D(cvMat, i, j, (255-cvGetReal2D(cvMat, i, j)));
        }
    }
    cvShowImage("Hasil", cvMat);
    cvWaitKey(0);
    cvReleaseMat(&cvMat);
    return 0;
}

Ok, sekarang akan saya jelaskan maksud dari pemrograman diatas apa.

Hal pertama yang kita lakukan adalah me-load citra yang kita inginkan dalam bentuk grayscale. Tapi yang kita load adalah matriks citra tersebut. Kenapa begitu? Karena apabila kita ingin memberikan efek negative pada suatu citra secara manual, kita harus bisa memanipulasi pixels-pixels-nya secara langsung.

Kemudian pada looping itu kita telusuri satu per satu pixels dari citra yang kita load tadi dan langsung kita manipulasikan pixels-pixels-nya.

Contoh Negative Image + Rumus
Contoh Negative Image + Rumus

Gambar diatas merupakan contoh Negative Image beserta rumusnya. Intinya, nilai maksimal dari suatu pixel grayscale (255) dikurangi dengan nilai pixel citra yang asli. Ada juga yang menggunakan 127 sebagai operand pertama, tapi saya menggunakan 255. Untuk kasus gambar RGB tidak saya jelaskan di sini.

Nah, itulah yang sebenarnya dilakukan program di dalam loop. dia mengambil nilai pixel yang ada pada baris i, kolom j dari gambar asli dan menguranginya dengan nilai 255

(255-cvGetReal2D(cvMat, i, j))

Setelah itu, nilai yang diperoleh akan dimasukkan pada matriks gambar original kita tadi pada koordinat yang sama.

cvSetReal2D(cvMat, i, j, (255-cvGetReal2D(cvMat, i, j))); 

Kalau misalnya bingung, ini saya kasih program yang sama tapi menggunakan dua matriks, satu untuk input, satu lagi untuk hasil. Saya rasa ini sudah jelas jadi tidak perlu saya jelaskan lagi ya. :)

#include 
#include 
#include 

using namespace std;
using namespace cv;


int main(int argc, char** argv)
{

    CvMat *cvMat = cvLoadImageM("cameraman.jpg", CV_LOAD_IMAGE_GRAYSCALE);
    CvMat *out = cvCreateMat(cvMat->rows, cvMat -> cols, cvMat->type );
    for (int i = 0;i< cvMat->rows; i++)
    {
        for (int j=0;j<cvmat->cols;j++)
        {
            cvSetReal2D(out, i, j, (255-cvGetReal2D(cvMat, i, j)));
        }
    }
    cvShowImage("Hasil", out);
    cvWaitKey(0);
    cvReleaseMat(&cvMat);
    cvReleaseMat(&out);
    return 0;
}


Pada baris kedua, yang kita lakukan adalah membuat matrix dengan jumlah baris dan kolom dan tipe yang sama dengan citra original. Saya yakin ini sudah jelas kenapa :)

Semoga bermanfaat ya tutorial OpenCV saya ini. :)

Komentar

Posting Komentar

Postingan populer dari blog ini

PHP Tutorial - Menjalankan Program .exe "Hello World!" Melalui PHP

Hai semua, saya ingin berbagi ilmu yang saya dapatkan sambil mengerjakan skripsi saya. Pernah tidak, kalian sudah bikin suatu program keren menggunakan bahasa C/C++, tapi kalian harus menjalankannya di SERVER??? Contoh kasus yang membuat Anda melakukan ini apa? Contoh sederhananya membuat Web Service. Di mana operasi perhitungan service yang ditawarkan menggunakan bahasa C/C++. Kalau misal kalian mau bikin make PHP dari awal web servicenya, sebenarnya tidak apa-apa juga, tapi kalau misalkan sudah ada program C/C++-nya, mending make yang sudah ada daripada buat dari awal lagi kan??? :)

Android Tutorial - Membuat Rounded Corner Edit Text

Kali ini saya ingin menmposting tentang bagaimana caranya membuat rounded corner EditText (EditText dengan sudut membulat) di Android. Ikuti saja langkah-langkah berikut:

Android Tutorial - Menambahkan File Gambar ke Image Gallery Emulator Android

Kali ini saya ingin berbagi tentang bagaimana caranya kita bisa memasukkan file (baik itu gambar .jpg, .png, atau musik .mp4, .wav, dll.) tapi tanpa perlu diprogram menggunakan java, cukup lewat Eclipse atau ADTnya saja. Caranya cukup mudah ko.