मैं एक छवि पर प्रभावशाली रंग ढूंढना चाहता हूं। इसके लिए, मुझे पता है कि मुझे छवि हिस्टोग्राम का उपयोग करना चाहिए। लेकिन मुझे छवि प्रारूप के बारे में निश्चित नहीं है। आरजीबी, एचएसवी या ग्रे छवि का कौन सा उपयोग किया जाना चाहिए?छवि पर प्रभावशाली रंग ढूंढें
हिस्टोग्राम की गणना के बाद, मुझे हिस्टोग्राम पर अधिकतम मूल्य मिलना चाहिए। इसके लिए, मुझे एचएसवी छवि के लिए अधिकतम binVal मान नीचे मिलना चाहिए? मेरे परिणाम छवि में केवल काला रंग क्यों है?
float binVal = hist.at<float>(h, s);
संपादित करें:
मैं नीचे दिए गए कोड की कोशिश की है। मैं एच-एस हिस्टोग्राम खींचता हूं। और मेरी परिणाम छवियां यहां हैं। मुझे बाइनरी थ्रेसहोल्ड के बाद कुछ भी नहीं मिला। शायद मुझे गलत हिस्टोग्राम मान गलत तरीके से मिल जाए।
cvtColor(src, hsv, CV_BGR2HSV);
// Quantize the hue to 30 levels
// and the saturation to 32 levels
int hbins = 20, sbins = 22;
int histSize[] = {hbins, sbins};
// hue varies from 0 to 179, see cvtColor
float hranges[] = { 0, 180 };
// saturation varies from 0 (black-gray-white) to
// 255 (pure spectrum color)
float sranges[] = { 0, 256 };
const float* ranges[] = { hranges, sranges };
MatND hist;
// we compute the histogram from the 0-th and 1-st channels
int channels[] = {0, 1};
calcHist(&hsv, 1, channels, Mat(), // do not use mask
hist, 2, histSize, ranges,
true, // the histogram is uniform
false);
double maxVal=0;
minMaxLoc(hist, 0, &maxVal, 0, 0);
int scale = 10;
Mat histImg = Mat::zeros(sbins*scale, hbins*10, CV_8UC3);
int maxIntensity = -100;
for(int h = 0; h < hbins; h++) {
for(int s = 0; s < sbins; s++)
{
float binVal = hist.at<float>(h, s);
int intensity = cvRound(binVal*255/maxVal);
rectangle(histImg, Point(h*scale, s*scale),
Point((h+1)*scale - 1, (s+1)*scale - 1),
Scalar::all(intensity),
CV_FILLED);
if(intensity > maxIntensity)
maxIntensity = intensity;
}
}
std::cout << "max Intensity " << maxVal << std::endl;
Mat dst;
cv::threshold(src, dst, maxIntensity, 255, cv::THRESH_BINARY);
namedWindow("Dest", 1);
imshow("Dest", dst);
namedWindow("Source", 1);
imshow("Source", src);
namedWindow("H-S Histogram", 1);
imshow("H-S Histogram", histImg);
क्या आप कुछ कोड पोस्ट करना चाहते हैं? धन्यवाद –