导航:首页 > 源码编译 > opencvbm算法

opencvbm算法

发布时间:2022-12-23 11:14:36

A. 我想请教一下opencv中cvFindStereoCorrespondenceBM,cvFindStereoCorrespondenceGC函数的具体流程

http://blog.csdn.net/wqvbjhc/article/details/6260844 这个网址给你,可以参考一下,我以前参考这个试验成功了~

B. opencv关于像素点的图像匹配算法

首先,建议你将图像中感兴趣区域(比如上图中的字母)取出来进行归一化,然后在进行匹配率计算。这是因为周围环境会对匹配率产生影响。
其次,建议你将匹配率算法改成Hausdorff距离https://en.wikipedia.org/wiki/Hausdorff,这样对图像有些平移什么的都不怎么敏感了。

C. opencv检测缺陷用哪些算法

根据不同的需求来进行不同的处理
1 空洞 这个肯定是像素颜色和周边的不同 建议用阈值分割 然后轮廓检测
2 褶皱 这个褶皱肯定会有梯度的变化 建议检测边缘 再计算褶皱的梯度信息
3 划痕 这个和上一个问题相似 但是也有不同 应该是梯度的方向和强度不同(一个是凹一个是凸)
4 斑点 如果只是点点星星的 opencv里也有很多角点检测算法 比如 surf fast ORB等

D. opencv三维重建深度怎么不随视场变化

  1. 视场变化主要是通过找出每对图像间的对应关系,根据三角测量原理,得到视差图;

  2. 在获得了视差信息后,根据投影模型很容易地可以得到原始图像的深度信息和三维信息。立体匹配技术被普遍认为是立体视觉中最困难也是最关键的问题,主要是以下因素的影响:

(1)光学失真和噪声(亮度、色调、饱和度等失衡)

(2)平滑表面的镜面反射

(3)投影缩减(Foreshortening)

(4)透视失真(Perspective distortions)

(5)低纹理(Low texture)

(6)重复纹理(Repetitive/ambiguous patterns)

(7)透明物体

(8)重叠和非连续

E. 基于opencv的纸张表面质量检测算法中

opencv里面是没有那种算法的,它只是提供一些常用的计算函数。具体的算法,由于你的需求比较特殊,相信应该没有现成的瑕疵检测算法,好在你的需求难度应该不大,通过常用的图像识别算法,比如纹理算法(Gabor算法)、SURF算法就可以找到白纸上瑕疵,这些瑕疵都是相当于一张白纸的特征点嘛!基本思想就是借用图像识别、匹配过程的思想——找图像上的特征点。白纸一般是提取不出特征点的,要是提取出来了,那就说明白纸上有东西(洞、褶皱或者异物)。

F. opencv实现人脸识别有多少种算法

OpenCV在2.4.1以后的版本中开始自带人脸识别,共有三种人脸识别算法的实现,分别是PCA , LDA , LBPH. OpenCV2创建方法如下:
cv::Ptr<cv::FaceRecognizer>facerPCA,facerLDA;
cv::Ptr<cv::FaceRecognizer>facerLBPH=cv::createLBPHFaceRecognizer();
facerPCA=cv::Algorithm::create<cv::FaceRecognizer>("FaceRecognizer.Eigenfaces");
facerLDA=cv::Algorithm::create<cv::FaceRecognizer>("FaceRecognizer.Fisherfaces");
在OpenCV3中,人脸识别的实现被移动到第三方库opencv_contrib中,而且OpenCV3版本的各个版本3.0.0,3.2.0,3.3.0的创建方法均不同,且都被移动到cv::face::名字空间下.

G. 人脸比对 opencv怎么实现

其实有很多办法,我说一种简单办法的思路吧,如果编码的话,代码量有些大。
[思路]识别出某个人的脸

(1)你先准备好这个人的几张或几十张的图片让程序来“学习”
(2)[程序分为两部分]第一部分:[学习这个人的脸]
把这些图片逐个读入程序,然后对每个图片进行以下处理:
a.初步降噪:可以用cvErode或更好级别的算法来对图像完成初步降噪(opencv这块有几个挺好的算法,自己是依据需求和场景来定用哪个吧)
b.用ROI或其他方法划定出人脸区域
c.为ROI圈定的区域 建立histogram
(3)这样你就有了几十个histogram,然后自己写个算法来提取这几十张histogram 的通用特点[也就是模糊的找到这个人的脸部特征]
(4)然后再依据提取的特征建立一个histogram
(5)[程序第二部分]:[识别人脸]
a.从摄像头,读入人脸
b.初步降噪
c.ROI划定区域
d.建立一个histogram
e.用这个histogram与之前[学习中]的histogram进行比较,如果差异小于你规定的阀值 ,则确定识别成功。
---------------------------------------------------------------------------------
以上功能只能做到:如果这个人出现在摄像头前,则能认出这个人来了,如果其他人出现在摄像头前则输出“这个人不是要找的人”。
---------------------------------------------------------------------------------
上面的算法应该算是最简单的啦,所以效果应该不会太好,opencv中还可以对图像进行划分,然后定点五官,这个方法可能更好一些。
---------------------------------------------------------------------------------
如果你要让它能识别出多人,那么思路一样,只不过要对每个人进行上面提到的“机器学习”的过程,也就是建立一个自己的识别库的过程。

H. 如何利用opencv实现彩色图像边缘检测算法

在opencv中显示边缘检测很简单,只需调用一个cvCanny函数,其使用的是Canny算法来实现对图像的边缘检测.
函数原型为:
void cvCanny( const CvArr* image,CvArr* edges,double threshold1,double threshold2, int aperture_size=3 );
第一个参数为待检测的图像,注意一点,其必须是灰度图.
第二个参数为输出的边缘图,其也是一个灰度图.
后三个参数与Canny算法直接相关,threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割,aperture_size算子内核大小,可以去看看Canny算法.
从彩色图到灰度图需要使用到cvCvtColor函数,其接受三个参数,第一为输入,第二为输出,第三个为转换的标识,我们这边是RGB到GRAY,使用的是CV_RGB2GRAY.
参考demo代码如下:

#include <iostream>

#include <string>
#include <sstream>
#include <opencv/cv.h>
#include <opencv/highgui.h>

using namespace std;

int String2int(const string& str_)
{
int _nre = 0;
stringstream _ss;
_ss << str_;
_ss >> _nre;
return _nre;
}

void DoCanny(const string& strFileName_)
{
//原彩色图片
IplImage* _pIplImageIn = cvLoadImage(strFileName_.data());

if (_pIplImageIn == NULL)
{
return;
}
//彩色图片转换成灰度图放置的图片
IplImage* _pIplImageCanny = cvCreateImage(cvGetSize(_pIplImageIn), _pIplImageIn->depth, 1);
cvCvtColor(_pIplImageIn, _pIplImageCanny, CV_RGB2GRAY);//CV_RGB2GRAY将rgb图转成灰度图
//只有边缘路径的图片
IplImage* _pIplImageOut = cvCreateImage(cvGetSize(_pIplImageIn), IPL_DEPTH_8U, 1);

//边缘检测只能作用于灰度图
if (_pIplImageCanny->nChannels != 1)
{
return;
}

//边缘检测操作
cvCanny(_pIplImageCanny, _pIplImageOut, 1, 110, 3);

cvNamedWindow("Src");
cvShowImage("Src", _pIplImageIn);
cvNamedWindow("Canny");
cvShowImage("Canny", _pIplImageOut);

cvWaitKey(0);

cvReleaseImage(&_pIplImageIn);
cvReleaseImage(&_pIplImageCanny);
cvReleaseImage(&_pIplImageOut);

cvDestroyWindow("Src");
cvDestroyWindow("Canny");

}

int main(int argc, char* argv[])
{
if (argc < 2)
{
cout << "You should give the filename of picture!" << endl;
return -1;
}
DoCanny(argv[1]);
return 0;
}

阅读全文

与opencvbm算法相关的资料

热点内容
gz压缩文件夹 浏览:177
字母h从右往左跑的c语言编程 浏览:127
安卓手机如何拥有苹果手机横条 浏览:765
业余编程语言哪个好学 浏览:137
按照文件夹分个压缩 浏览:104
航空工业出版社单片机原理及应用 浏览:758
如何在电信app上绑定亲情号 浏览:376
安卓的怎么用原相机拍月亮 浏览:805
配音秀为什么显示服务器去配音了 浏览:755
c盘清理压缩旧文件 浏览:325
app怎么交付 浏览:343
图虫app怎么才能转到金币 浏览:175
如何做征文app 浏览:446
用什么app管理斐讯 浏览:169
安卓如何下载宝可梦剑盾 浏览:166
编译器开发属于哪个方向 浏览:940
megawin单片机 浏览:687
以色列加密货币监督 浏览:909
程序员前端现在怎么样 浏览:499
服务器和接口地址ping不通 浏览:557