Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <opencv2/opencv.hpp>
- #include <opencv2/highgui/highgui.hpp>
- using namespace std;
- using namespace cv;
- ///Prototype Fungsi
- int getMax(int a,int b,int c)
- {
- if(a>=b) {
- if(a>=c) return a;
- else return c;
- }
- else{
- if(b>=c) return b;
- else return c;
- }
- }
- int getMin(int a,int b,int c)
- {
- if(a<=b) {
- if(a<=c) return a;
- else return c;
- }
- else{
- if(b<=c) return b;
- else return c;
- }
- }
- int main()
- {
- Mat img = imread("dian_sastro.jpg", CV_LOAD_IMAGE_COLOR);
- //Mat imgHSV = cvCreateMat(img->height, img->width, CV_8UC3);
- //Mat imgHSV2 = cvCreateMat(img->height, img->width, CV_8UC3);
- Mat imgHSV = img.clone();
- Mat imgHSV2 = img.clone();
- // Konversi RGB ke HSV tanpa menggunakan library opencv
- Vec3b oldPixel;
- Vec3b newPixel;
- int b,g,r;
- double h,s,v;
- for(int i=0;i<img.rows;i++)
- {
- for(int j=0;j<img.cols;j++)
- {
- oldPixel = img.at<Vec3b>(i,j);
- // untuk akses pixel
- b=oldPixel.val[0];
- g=oldPixel.val[1];
- r=oldPixel.val[2];
- v=getMax(b,g,r); //[1
- //if
- if(v!=0)
- {
- s=(v-getMin(b,g,r))/v;
- }
- else {
- s=0;
- }
- if(s==0) h=0;
- else
- {
- if(v==r) h=(60 * (g-b))/(v-getMin(b,g,r));
- else if(v==g) h=120 + (60 * (b-r))/(v-getMin(b,g,r));
- else if(v==b) h=240 + (60 * (r-g))/(v-getMin(b,g,r));
- }
- if(h<0) h=h+360;
- // hapus komen untuk normalisasi
- v = v;
- s= 255*s;
- h=h/2;
- newPixel.val[0]=h;
- newPixel.val[1]=s;
- newPixel.val[2]=v;
- imgHSV.at<Vec3b>(i,j)[0]=h;
- imgHSV.at<Vec3b>(i,j)[1]=s;
- imgHSV.at<Vec3b>(i,j)[2]=v;
- }
- }
- imshow("RGB", img);
- imshow("HSV tanpa library", imgHSV);
- cvtColor(img,imgHSV2,CV_BGR2HSV); // menggunakan library openCV
- imshow("HSV Dengan Library OpenCV", imgHSV2);
- cvWaitKey(0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement