نه همچین تابعی وجود نداره .
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;
}