基于opencv的图像处理函数
//按行对图像进行高亮检测,高于平均值的取255,低于平均值的取0
void HDetect(Mat& mat)
{
for (int x = 0; x < mat.cols; x++)
{
int ave = 0, count = 0;
for (int y = 0; y < mat.rows; y++)
{
unsigned int data = mat.at<unsigned char>(y, x);
ave += data;
count++;
}
ave /= count;
for (int y = 0; y < mat.rows; y++)
{
unsigned int data = mat.at<unsigned char>(y, x);
//平均值作为阈值
int high, low;
if (ave>200){high = 0; low = 255;}
else{high = 255; low = 0; }//ave = ave * 20 / 21;
if (data>ave){data = high;}
else{data = low;}
mat.at<unsigned char>(y, x) = data;
}
}
}
//按列对图像进行高亮检测
void VDetect(Mat& mat)
{
for (int y = 0; y < mat.rows; y++)
{
int ave = 0, count = 0;
for (int x = 0; x < mat.cols; x++)
{
unsigned int data = mat.at<unsigned char>(y, x);
ave += data;
count++;
}
ave /= count;
for (int x = 0; x < mat.cols; x++)
{
unsigned int data = mat.at<unsigned char>(y, x);
//平均值作为阈值
int high, low;
if (ave>200){high = 0; low = 255;}
else{high = 255; low = 0;}
if (data>ave){data = high;}
else{data = low;}
mat.at<unsigned char>(y, x) = data;
}
}
}