2013-01-18 38 views

回答

0

,如果你有一個RGB圖像,然後就去做

cvtColor(img_rgb,img_hsv,CV_RGB2HSV); 

這是你想要的嗎?

編輯

for(int row=0;row<height;row++) 
{ 
    for(int col=0;col<width;col++) 
    { 
     Vec3b data = image_rgb.at<Vec3b>(row,col); 

     Vec3b data_hsv; 
     data_hsv[0] = // process red channel of pixel with data[0] 
     data_hsv[1] = // process green channel of pixel with data[1] 
     data_hsv[2] = // process blue channel of pixel with data[2] 


     image_hsv.at<Vec3b>(row,col)[0] = data_hsv[0]; 
     image_hsv.at<Vec3b>(row,col)[1] = data_hsv[1]; 
     image_hsv.at<Vec3b>(row,col)[2] = data_hsv[2]; 
    } 
} 
+0

其實我想轉換使用一些數學公式,而不使用任何內置的opencv函數 – nisargthakkar

0

你需要的是merge()。在C++中:

// Assuming you have the H, S, and V images 
std::vector<cv::Mat> channels; 
channels.push_back(h); 
channels.push_back(s); 
channels.push_back(v); 

cv::Mat hsv; 
cv::merge(channels, hsv); 

// Now you can display it 
cv::imshow("HSV", hsv); 
相關問題