محاسبه میانه یا Median تصویر - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

محاسبه میانه یا Median تصویر

+1 امتیاز
سلام.

آیا OpenCV تابعی داره که با آن Median تصویر را در ناحیه ماسک محاسبه کنیم؟
سوال شده شهریور 9, 1393  بوسیله ی مریم اکرمی (امتیاز 482)   25 55 66

1 پاسخ

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

نه همچین تابعی وجود نداره .

unsigned char median(InputArray _src, InputArray _mask){
		unsigned char result;
		Mat src = _src.getMat();
		Mat mask = _mask.getMat();

		if (src.type() != CV_8UC1 || CV_8UC1 != CV_8UC1)
			return -1;

		vector<uchar> pixels;
		int pixel_count;
		if (mask.empty()){
			pixel_count = src.size().area();
			pixels.reserve(pixel_count);
			for (size_t i = 0; i < mask.rows; i++){
				uchar* row = src.ptr<uchar>(i);
				for (size_t j = 0; j < mask.cols; j++)
					pixels.push_back(row[j]);
			}

		}
		else {
			pixel_count = countNonZero(mask);
			pixels.reserve(pixel_count);
			for (size_t i = 0; i < mask.rows; i++){
				uchar* row = src.ptr<uchar>(i);
				uchar* row_mask = mask.ptr<uchar>(i);
				for (size_t j = 0; j < mask.cols; j++)
				if (row_mask[j])
					pixels.push_back(row[j]);
			}
		}
		std::sort(pixels.begin(), pixels.end());
		if (pixel_count % 2 == 0)
			result = (pixels[pixel_count / 2 - 1] + pixels[pixel_count / 2]) / 2;
		else result = pixels[pixel_count / 2];

		return result;
	}

 

پاسخ داده شده شهریور 10, 1393 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد خرداد 22, 1399 بوسیله ی عباس مولایی
...