OpenCV Ubuntu C++ - Membuat filter pada frame

Halo selamat siang fellas. hahaha Sesuai janji saya pada post sebelumnya, saya mau share program mengenai filter pada frame. Gunanya apa ya? Salah satunya bisa untuk mengurangi noise. Kok bisa?? ya coba aja :D Ini saya buatin program filter blur, tepatnya make jenis gaussian blur. Berikut hasilnya:

Sebelum adanya filter:
 
Setelah adanya filter:

Mulai ngerti kan maksudnya?? hehehe sebenernya ada banyak jenis filter, ada median blur, billateral filter, dan semacamnya. Itu terserah anda mau pakai yang mana (sesuai kebutuhan saja). Berikut codenya:

//BISMILLAH - Dzikri Purnama - Free to Copy&Paste
//Filter Gaussian blur

//#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    int h_min = 4, h_max = 78, s_min = 50, s_max = 255, v_min = 20, v_max = 255; //oranye
    //int h_min = 95, h_max = 100, s_min = 130, s_max = 255, v_min = 150, v_max = 255; //biru
    //int h_min = 4, h_max = 24, s_min = 38, s_max = 255, v_min = 150, v_max = 255; //kuning

    VideoCapture cap(0);
    if(!cap.isOpened())
        return -1;

    cap.set(CV_CAP_PROP_FRAME_WIDTH,320);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT,240);

    Mat frame, hsv;
    namedWindow("camera");
    namedWindow("hsv");



    while (true)
    {
        cap>>frame;

        GaussianBlur(frame, frame, Size(11,11),2,2);
        imshow("camera",frame);
        cvtColor(frame,hsv,CV_BGR2HSV);
        inRange(hsv,Scalar(h_min,s_min,v_min),Scalar(h_max,s_max,v_max),hsv);

        createTrackbar("H_MIN: ","hsv",&h_min,255);
        createTrackbar("H_MAX: ","hsv",&h_max,255);
        createTrackbar("S_MIN: ","hsv",&s_min,255);
        createTrackbar("S_MAX: ","hsv",&s_max,255);
        createTrackbar("V_MIN: ","hsv",&v_min,255);
        createTrackbar("V_MAX: ","hsv",&v_max,255);

        imshow("hsv",hsv);


        if(waitKey(20) != -1)
            break;
    }

    return 0;
}
Langsung compile dan execute saja. Btw, untuk filter lumayan mudah.

Related Posts:

OpenCV Ubuntu C++ - Membuat trackbar pada frame HSV

Akhirnyaa..... Daritadi bikin program ini error terus, 2 jam baru nemu salahnya dimana. Oke nanti saya kasih tau salah saya dimana hehehe Kesempatan ini saya mau bahas pembuatan trackbar. Fungsinya? ya untuk menseleksi warna yang mau dipilih di frame HSV. Jika belum tau HSV itu apa, silahkan buka post sebelumnya. Penyeleksian warna cocok buat tracking warna nantinya. Nih nanti hasilnya seperti ini:


Itu saya tes untuk seleksi warna oranye. Tapi hasilnya masih tidak terlalu bagus, oleh karena itu nanti kita belajar filter, oke? Sekarang saya kasih code untuk trackbarnya dulu:
//BISMILLAH - Dzikri Purnama - Free to Copy&Paste
//Trackbar HSV

//#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    int h_min = 4, h_max = 78, s_min = 50, s_max = 255, v_min = 20, v_max = 255; //oranye
    //int h_min = 95, h_max = 100, s_min = 130, s_max = 255, v_min = 150, v_max = 255; //biru
    //int h_min = 4, h_max = 24, s_min = 38, s_max = 255, v_min = 150, v_max = 255; //kuning

    VideoCapture cap(0);
    if(!cap.isOpened())
        return -1;

    cap.set(CV_CAP_PROP_FRAME_WIDTH,320);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT,240);

    Mat frame, hsv;
    namedWindow("camera");
    namedWindow("hsv");

    while (true)
    {
        cap>>frame;

       
        imshow("camera",frame);
        cvtColor(frame,hsv,CV_BGR2HSV);
        inRange(hsv,Scalar(h_min,s_min,v_min),Scalar(h_max,s_max,v_max),hsv);

        createTrackbar("H_MIN: ","hsv",&h_min,255);
        createTrackbar("H_MAX: ","hsv",&h_max,255);
        createTrackbar("S_MIN: ","hsv",&s_min,255);
        createTrackbar("S_MAX: ","hsv",&s_max,255);
        createTrackbar("V_MIN: ","hsv",&v_min,255);
        createTrackbar("V_MAX: ","hsv",&v_max,255);

        imshow("hsv",hsv);
       

        if(waitKey(20) != -1)
            break;
    }

    return 0;
}
Setelah copas, langsung di compile dan execute aja :D Nah, sekarang kita bahas programnya.

Related Posts:

OpenCV Ubuntu C++ - Seleksi warna RGB ke HSV

Baru bangun tidur nih hehehe mending nulis aja ah... Jadi begini, kemarin kan udah bisa convert RGB ke GREY (abu2) sekarang kita coba convert RGB ke HSV (Hue Saturation Value). Emang biar apa??? Nanti tujuan nya adalah untuk menyeleksi warna. Jadi warna yang ditampilkan di frame ya sesuai yang diinginkan. Kaya ini hasilnya:

Langsung aja ya :) Copas aja code nya:
//BISMILLAH - Dzikri Purnama - Free to Copy&Paste
//BGR to HSV

//#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;
int h_min = 4, h_max = 78, s_min = 50, s_max = 255, v_min = 20, v_max = 255; //oranye
//int h_min = 95, h_max = 100, s_min = 130, s_max = 255, v_min = 150, v_max = 255; //biru
//int h_min = 4, h_max = 24, s_min = 38, s_max = 255, v_min = 150, v_max = 255; //kuning

int main()
{
    VideoCapture cap(0);
    if(!cap.isOpened())
        return -1;

    cap.set(CV_CAP_PROP_FRAME_WIDTH,320);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT,240);

    Mat frame, hsv, grey;
    namedWindow("camera");
    namedWindow("hsv");


    while (true)
    {
        cap>>frame;
        imshow("camera",frame);
        cvtColor(frame,hsv,CV_BGR2HSV);           inRange(hsv,Scalar(h_min,s_min,v_min),Scalar(h_max,s_max,v_max),hsv);
        imshow("hsv",hsv);

        if(waitKey(20) != -1)
            break;
    }

    return 0;
}
Kalo udah bisa di compile dan execute buat liat hasilnya :D
Sekarang mari kita bahas isi programnya:

Related Posts: