OpenCV常用函数
中值滤波函数
参数为输入图像,输出图像,核矩阵大小
模糊滤波函数
参数为输入图像,输出图像,模糊效果
原图与光背景
差分与除法对比图
光纹L、图像I、差分dif、除法div
dif = L - I
div = dif * 255 / L = 255 * ( 1 - ( I / L ) )
/**
* Calcualte image pattern from an input image
* @param img Mat input image to calculate the light pattern
* @return a Mat pattern image
*/
Mat calculateLightPattern(Mat img)
{
Mat pattern;
// Basic and effective way to calculate the light pattern from one image
blur(img, pattern, Size(img.cols/3,img.cols/3));
return pattern;
}
效果比较好
输出灰度图像的平均值和通道数
img_noise为Mat型
cout << "Channel: " << img_noise.channels() << endl;
cout<<"mean "<<mean(img_noise)[0]<<endl;
灰度图像灰度级范围一般从0到255,白色为255,黑色为0。
void cv::resize ( InputArray src,
OutputArray dst,
Size dsize,
double fx = 0,
double fy = 0,
int interpolation = INTER_LINEAR
)
将原图像大小改为目的图像大小
resize(src, dst, dst.size(), 0, 0, interpolation);
将原图像大小长宽各缩小一半
resize(src, dst, Size(), 0.5, 0.5, interpolation);
缩小,interpolation使用INTER_AREA;放大,interpolation使用INTER_CUBIC (慢)或INTER_LINEAR(快,也还行)。
官方资料: OpenCV: Geometric Image Transformations.
等待n毫秒waitKey(n)
永久等待waitKey(0)
void cv::CascadeClassifier::detectMultiScale ( InputArray image,
std::vector< Rect > & objects,
double scaleFactor = 1.1,
int minNeighbors = 3,
int flags = 0,
Size minSize = Size(),
Size maxSize = Size()
)
image 灰度图像
objects 识别出来的人脸数组
scaleFactor 参数,指定在每个图像尺度上缩小多少图像大小
minNeighbors 参数,指定每个候选矩形应该保留多少个邻居
flags
minSize 最小可能的对象大小。小于该值的对象将被忽略
maxSize 最大可能的对象大小。大于该值的对象将被忽略。如果maxSize == minSize,模型在单一尺度上进行评估