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;}
0 komentar:
Post a Comment