当前位置:首页 > 图像识别 > 正文

opencv图像识别常用函数

本文目录一览

(°ο°)cvCanny函数的作用是什么?

在OpenCV库中,cvCanny函数是一个非常重要的图像处理工具,用于检测图像中的边缘。 该函数的定义如下:


它接收五个参数:


CvArr*image:这是一个指向输入图像的指,通常是一个CvMat对象,包含要处理的灰度或彩色图像数据。
CvArr*edges:这是输出参数,用于存储处理后的边缘信息,也是一个CvMat对象。
doublethreshold1:这是第一个阈值,用于首先过滤掉可能的边缘候选区域。 通常,小于该值的像素为噪声并忽略。
doublethreshold2:这是用于进一步确认边缘的第二个阈值。 大于或等于该值的像素为真实边缘,小于该值的像素为噪声。
intaperture_size=3:这是Sobel算子的大小,用于计算图像梯度。 通常的值为3,表示3x3Sobel矩阵。

cvCanny函数的工作原理是使用高斯滤波器对输入图像进行平滑处理,然后计算图像的梯度,然后使用非极大值抑(Non-MaximumSuppre ssion)以及寻找稳定性优势的双阈值策略。 该功能广泛应用于边缘检测和图像分等计算机觉任务。

●^●怎样使用OpenCV进行脸识别

我不知道你所说的面部识别是识别特定的还是仅仅检测图像中的面部。
刚刚使用opencv完成了脸识别,但还需要优化。 说一下大概的步骤:
1.第一步是准备数据。 需要从网上下载一些脸数据库,稍后会用这些数据库来训练脸识别模型。 自带了opencv脸检测模型,但是识别模型需要自己训练。 下载脸数据库后,需要对脸进行标记。 这是一项繁琐的工作,但是网上有脚本,也可以自己写程序来简化作员的工作量。
2.一旦你标记了数据,那就是opencv的问题了。 训练出来的函数非常简单。 仅存在以下三句:
Ptrmodel=createEigenFaceRecognizer();
model->train(images,labels);
model->save("MyFacePCAModel.xml");
3.然后开相机进行脸检测,其中包括对脸位置进行取景。 脸检测模型是opencv自带的。
CascadeClassifiercascade;
cascade.load("haarcascade_frontalface_alt.xml");
这是加载方法。
cascade.detectMultiScale(gray,faces,
1.1,2,0
//|CV_HAAR_FIND_BIGGEST_OBJECT
//|CV_HAAR_DO_ROUGH_SEARCH
|CV_HAAR_SCALE_IMAGE,
Size(30,30));
这是检测方法。 这里检测的是一一对应的脸矩形框,所以简单的使用矩形绘方法来绘。
4.下一步是使用新训练的面部模型来识别检测到的面部。 加载:
PtrmodelPCA=createEigenFaceRecognizer();
modelPCA->load("MyFacePCAModel.xml");
检测:
intpre dictPCA=0;
if(face.rows>=120)
{
resize(face,face_test,Size(92,112));
}
if(!face_test.empty())
{
pre dictPCA=modelPCA->pre dict(face_test);
如果预测结果等于result已标记,说明已成功识别。
大致流程是这样的,如果你对opencv有一定的了解,应该能看懂。 如果不懂就只能私聊了。
第一次回答这么的问题,有点不习惯。

(ˉ▽ˉ;)IplImage常用的五个函数(I/O)

在使用IplImage时,经常需要使用五个主要函数来进行图像输入和输出作。 首先,图像加载是通过函数cvLoadImage实现的,该函数接受一个文件名参数和一个可选的iscolor参数。 iscolor可以为正值(对于三通道图像)、零(对于单通道图像)或负值(通道数由文件确定)。 函数原型为:


IplImage*cvLoadImage(constchar*filename,intiscolor);


则窗口Definition为cvNamedWindow功能。 创建一个窗口来显示图像。 参数包括窗口名称和窗口属性。 例如,以下是将窗口设置为自动调整大小的代码:


intcvNamedWindow(constchar*name,unsignedlongflags);


要显示图像,请将IplImage指指向指定的窗口。 cvShowImage函数来显示。


voidcvShowImage(constchar*name,constCvArr*image);


Image保存时输入文件名和IplImage指cvSaveImage函数。


intcvSaveImage(constchar*filename,constCvArr*image);


最后,要释放内存,请使用cvReleaseImage函数。 必须调用IplImage来销毁指。


voidcvReleaseImage(IplImage**image);


这篇重写的文章以HTML格式呈现,大体上清楚地介绍了所使用的五个函数以及他们的功能。 它解释了如何使用每个函数及其参数,对于理解和实际作很有帮助。
扩展信息

由于OpenCV主要用于计算机觉处理,因此函数库中最重要的结构是IplImage结构。 IplImage结构主要源自IntelImageProcessingLibrary(IPL),这是Intel的另一个用于图像处理的函数库。