بدست آوردن رنگ غالب تصویردر OpenCV - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

بدست آوردن رنگ غالب تصویردر OpenCV

0 امتیاز
سلام به دوستان.

چطور بایستی تو یک تصویر رنگ غالب(رنگی که خودش و طیف های کمی روشن و تاریکش دارای بیشترین مساحت از تصویر هستند) را محاسبه کنم
سوال شده اردیبهشت 21, 1396  بوسیله ی korosh (امتیاز 155)   11 32 37

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام.

از تصویر هیستوگرام 3 بعدی بگیرید البته با تعداد بین های کمتر و سپس نقطه ماکزیمم را توی هیستوگرام 3 بعدی پیدا کنید میشه رنگی که بیشترین فرکانس را داره.

cv::Scalar getDominantColor(cv::InputArray _src, int quantize_bins = 8) {
	cv::Mat src = _src.getMat();
	float hRange[] = { 0, 255 };
	const float* etendu[] = { hRange, hRange,hRange };
	float scale = 256.f / quantize_bins;
	int tailleHist[] = { quantize_bins, quantize_bins, quantize_bins };
	int canaux[] = { 0, 1,2 };
	double hMin, hMax;
	cv::SparseMat histogramme;
	cv::Mat resultMap;
	cv::calcHist(&src, 1, canaux, cv::Mat(), histogramme, 3, tailleHist, etendu, true, false);
	int max_pos[3];
	
	cv::minMaxLoc(histogramme,0, &hMax, 0, max_pos);
	return cv::Scalar(max_pos[0] * scale, max_pos[1] * scale, max_pos[2] * scale);

}

 

پاسخ داده شده اردیبهشت 21, 1396 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد اردیبهشت 26, 1396 بوسیله ی korosh
...