Tulis aja dulu, siapa tahu orang lain butuh :-)

MEMOTONG GAMBAR MENJADI 3 BAGIAN DI OPENCV

Pada tutorial kali ini, saya akan mempraktikkan bagaimana caranya memecah atau memotong citra vertikal menjadi 3 bagian sama besar. Berikut adalah
citra yang akan kita potong:

Nah, citra diatas sebenarnya adalah gabungan dari 3 buah citra R, G, B. Namun yang tampa memang seperti citra Gray. Tapi, jika kita perhatikan secara seksama, akan terlihat perbedaan diantara ketiganya.
langkah berikutnya adalah memotong citra tersebut menjadi 3 bagian sama besar. 



Berikutnya adalah menyatukan gambar menjadi 1 dalam sebuah jendela:

Sudah terlihat kan dari gambar di atas sudah muncul warnanya.

Ok, sekarang kita masuk ke source codenya:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std; //menggunakan cout
using namespace cv;

int main()
{
    Mat image;// membuat variabel dengan nama image
    image=imread("31421v.jpg",0); //membaca image dari folder
    int h_image=image.rows; //variabel untuk menampung nilai rows
    int w_image=image.cols; //variabel untuk menampung nilai cols

   //proses pemotongan gambar 1, disimpan dalam array 0
    Rect r1(0, h_image/3*0, w_image, h_image/3);
    Mat img1=image(r1);
    imshow("gambar 1",img1);

//proses pemotongan gambar 2, disimpan dalam array 1
    Rect r2(0, h_image/3*1, w_image, h_image/3);
    Mat img2=image(r2);
    imshow("gambar2",img2);

//proses pemotongan gambar 3, disimpan dalam array 2
    Rect r3(0, h_image/3*2, w_image, h_image/3);
    Mat img3=image(r3);
    imshow("gambar3",img3);

    Mat merge_img; //variabel baru bernama merge image untuk menyimpan hasil penggabungan
    merge_img.create(h_image/3, w_image, CV_8UC3);
    for (int row=0; row < h_image/3; row++)
        for (int col=0; col < w_image; col++) {
            merge_img.at<Vec3b>(row,col)[0] = img1.at<uchar>(row+14,col+1.5); //penempatan posisi citra 1
            merge_img.at<Vec3b>(row,col)[1] = img2.at<uchar>(row+6,col+1.5); //penempatan posisi citra 2
            merge_img.at<Vec3b>(row,col)[2] = img3.at<uchar>(row,col); //penempatan posisi citra 3
        }
    imshow( "hasil", merge_img ); //menampilkan hasil penggabungan

 waitKey(0);// wait for a keystroke in the window
    return 0;
}

Share:

0 komentar:

Post a Comment

ARCHIEV

VISITORS

free counters

FRIENDS

Blog Archive