收藏 分销(赏)

opencv函数总结.doc

上传人:仙人****88 文档编号:11258085 上传时间:2025-07-11 格式:DOC 页数:31 大小:1.45MB 下载积分:10 金币
下载 相关 举报
opencv函数总结.doc_第1页
第1页 / 共31页
opencv函数总结.doc_第2页
第2页 / 共31页


点击查看更多>>
资源描述
一、常用函数 1、 cvLoadImage 2、 cvSaveImage 3、 cvCreateImage 4、 cvGetSize 5、 cvCvtColor 6、 cvQueryFrame 7、 CvScalar 8、 cvGet2D 9、 cvSet2D 10、 Cvcopy拷贝 11、 cvThreshold阈值化 12、 cvAdaptiveThreshold自适应阈值化 13、 cvFindContours检索轮廓 14、 cvDrawContours绘制轮廓 15、 cvCreateMemStorage 16、 CvSeq 17、 cvCanny 18、 cvErode腐蚀 19、 cvDilate膨胀 20、 cvHoughCircles 21、 垂直投影和水平投影的例子 22、 cvLine和CvPoint、cvRectangle 23、 cvSetImageROI 24、 cvResetImageROI 1、cvLoadImage 函数原型: IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR ); 详细介绍 filename :要被读入的文件的文件名(包括后缀); flags :指定读入图像的颜色和深度: 指定的颜色可以将输入的图片转为3通道(CV_LOAD_IMAGE_COLOR), 单通道 (CV_LOAD_IMAGE_GRAYSCALE), 或者保持不变(CV_LOAD_IMAGE_ANYCOLOR)。 深度指定输入的图像是否转为每个颜色通道每象素8位,,或者同输入的图像一样保持不变。 选中CV_LOAD_IMAGE_ANYDEPTH,则输入图像格式可以为8位无符号,16位无符号,32位有符号或者32位浮点型。 如果输入有冲突的标志,将采用较小的数字值。比如CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYCOLOR 将载入3通道图。CV_LOAD_IMAGE_ANYCOLOR和CV_LOAD_IMAGE_UNCHANGED是等值的。但是,CV_LOAD_IMAGE_ANYCOLOR有着可以和CV_LOAD_IMAGE_ANYDEPTH同时使用的优点,所以CV_LOAD_IMAGE_UNCHANGED不再使用了。 如果想要载入最真实的图像,选择CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR。 函数cvLoadImage从指定文件读入图像,返回读入图像的指针。 目前支持如下文件格式: Windows位图文件- BMP, DIB; JPEG文件 - JPEG, JPG, JPE; 便携式网络图片- PNG; 便携式图像格式- PBM,PGM,PPM; Sun rasters - SR,RAS; TIFF文件 - TIFF,TIF; OpenEXR HDR 图片 - EXR; JPEG 2000 图片- jp2。 cvSaveImage 保存图像到文件 int cvSaveImage( const char* filename, const CvArr* image ); Filename:文件名。 Image:要保存的图像。 函数cvSaveImage保存图像到指定文件。图像格式的的选择依赖于filename的扩展名,请参考cvLoadImage。只有8位单通道或者3通道(通道顺序为'BGR' )可以使用这个函数保存。如果格式,深度或者通道不符合要求,请先用cvCvtScale 和cvCvtColor转换;或者使用通用的cvSave保存图像为XML或者YAML格式。 cvLoadImage函数使用方法: cvLoadImage( filename, -1 ); 默认读取图像的原通道数 cvLoadImage( filename, 0 ); 强制转化读取图像为灰度图 cvLoadImage( filename, 1 ); 读取彩色图 例:将读入图像强制转换为灰度图像显示 #include <highgui.h> #include <cv.h> int main(int argc, char **argv) { if (argc != 2)//改为(argc != 1) return -1; /*强制转换为灰度图像*/ IplImage *img = cvLoadImage(argv[1], 0); cvNamedWindow("example"); cvShowImage("example", img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindow("example"); return 0; } 2、cvCreateImage cvCreateImage: 创建首地址并分配存储空间 IplImage* cvCreateImage( CvSize size, int depth, int channels ); 参数说明: size 图像宽、高. depth 图像元素的位深度,可以是下面的其中之一: { IPL_DEPTH_8U - 无符号8位整型 IPL_DEPTH_8S - 有符号8位整型 IPL_DEPTH_16U - 无符号16位整型 IPL_DEPTH_16S - 有符号16位整型 IPL_DEPTH_32S - 有符号32位整型 IPL_DEPTH_32F - 单精度浮点数 IPL_DEPTH_64F - 双精度浮点数 } cvGetSize OpenCV提供的一种操作矩阵图像的函数。得到二维的数组的尺寸,以CvSize返回。 CvSize cvGetSize( const CvArr* arr ); 它与cvGetDims()密切相关,cvGetDims()返回一个数组的大小。主要的不同是cvGetSize()是专为矩阵和图像设计的,这两种对象的维数总是2。其尺寸可以以CvSize结构的形式返回,例如当创建一个新的大小相同的矩阵或图像时,使用此函数就很方便。 OpenCV提供了多种基本数据类型。其中有一种是CvSize类型,它的数据成员是integer类型的width和height。如果希望使用浮点类型,则选用CvSize的变体类型CvSize2D32f。 cvCvtColor cvCvtColor(...)是Opencv里的颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间的转换,也可以转换为灰度图像。 参数: CV_RGB2GRAY是RGB到gray, CV_GRAY2RGB是gray到RGB.处理结果是彩色的,则转灰色就是了: void cvCvtColor( const CvArr* src, CvArr* dst, int code ); src 输入的 8-bit,16-bit或 32-bit单倍精度浮点数影像。 dst 输出的8-bit, 16-bit或 32-bit单倍精度浮点数影像。 code 色彩空间转换的模式,该code来实现不同类型的颜色空间转换。比如CV_BGR2GRAY表示转换为灰度图,CV_BGR2HSV将图片从RGB空间转换为HSV空间。其中当code选用CV_BGR2GRAY时,dst需要是单通道图片。当code选用CV_BGR2HSV时,对于8位图,需要将RGB值归一化到0-1之间。这样得到HSV图中的H范围才是0-360,S和V的范围是0-1。 函数使用范例 这里给出将RGB图像转换为灰度和HSV的例子: IplImage *src = cvLoadImage("4085_1.jpg",1);//原图 IplImage *dst_gray = cvCreateImage(cvGetSize(src),src->depth,1);//灰度图 IplImage *dst_image = cvCreateImage(cvGetSize(src),32,src->nChannels); IplImage *src_image_32 = cvCreateImage(cvGetSize(src),32,src->nChannels); //这两个图需要是32浮点位的,因为对原图进行归一化后得到的是浮点数 cvCvtColor(src,dst_gray,CV_BGR2GRAY);//得到灰度图 cvConvertScale(src,src_image_32,1.0/255.0,0);//将原图RGB归一化到0-1之间 cvCvtColor(src_image_32,dst_image,CV_BGR2HSV);//得到HSV图 3、 cvQueryFrame OpenCV中一个函数cvQueryFrame 从摄像头或者文件中抓取并返回一帧 IplImage* cvQueryFrame( CvCapture* capture ); Capture:视频获取结构。 函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。 这个函数仅仅是函数cvGrabFrame和 函数cvRetrieveFrame在一起调用的组合。 返回的图像不可以被用户释放或者修改。 cvQueryFrame的参数为CvCapture结构的指针。用来将下一帧视频文件载入内存,返回一个对应当前帧的指针。与cvLoadImage不同的是cvLoadImage为图像分配内存空间,而cvQueryFrame使用已经在cvCapture结构中分配好的内存。这样的话,就没有必要通过cvReleaseImage()对这个返回的图像指针进行释放,当CvCapture结构被释放后,每一帧图像所对应的内存空间即会被释放。 4、 CvScalar 这个 CvScalar就是一个可以用来存放4个double数值的数组(O'Reilly的书上写的是4个整型成员);一般用来存放像素值(不一定是灰度值哦)的,最多可以存放4个通道的。 typedef struct CvScalar   double val[4];   }CvScalar; 如何赋值 1. inline CvScalar cvScalar( double val0, double val1=0,double val2=0, double val3=0 ); //最通用的,可初始化0-4个通道 举例: a) 存放单通道图像中像素:cvScalar(255); b) 存放三通道图像中像素:cvScalar(255,255,255); 2. inline CvScalar cvRealScalar( double val0 ); //只使用第一个通道,val[0]=val0;等同于cvScalar(val0,0,0,0); 3. inline CvScalar cvScalarAll( double val0123 ); //所用通道值用同一个val0123赋值 4. CV_RGB CV_RGB是OPENCV中的一个宏,用于创建一个色彩值: #define CV_RGB(r,g,b) cvScalar((b),(g),(r),0)。 看到转换为cvScalar时,rgb的顺序变为bgr,这是因为opencv中存储RGB模式彩图时,采用的通道顺序是BGR. 举例 CvScalar color = CV_RGB( rand()&255, rand()&255, rand()&255 ) 返回特殊的数组元素 cvGet2D函数 CvScalar cvGet2D( const CvArr* arr, int idx0, int idx1 ); arr 输入数组. idx0 元素下标第一个以0为基准的成员 idx1 元素下标第二个以0为基准的成员 idx2 元素下标第三个以0为基准的成员 idx 元素下标数组 函数cvGet*D 返回指定的数组元素。对于稀疏数组如果需要的节点不存在函数返回0 (不会创建新的节点) 例 { CvScalar s; s = cvGet2D(src, j,i); }//获取src图像中坐标为(i,j)的像素点的值 s.val[0] 代表src图像BGR中的B通道的值~ cvSet2D函数 cvGet2D(),cvSet2D()为opencv库中的函数。 Void cvSet2D (const CvArr * arr, int idx0, int idx1, CvScalar value);//常用于像素赋值 cvGet2D() 的函数原型是 : CvScalar cvGet2D (const CvArr * arr, int idx0, int idx1); 函数返回的是一个CvScalar 容器,其参数中也有两个方向的坐标,但跟我们平常习惯的坐标不一样的是,idx0代表是的行,即高度,对应于我们平常坐标系的y, idx1代表的是列,即宽度,对应于我们平常坐标系的x,cvSet2D() 也类似。 Cvcopy函数 cvcopy是一个函数,拷贝一个数组给另一个数组 cvcopy : 拷贝一个数组给另一个数组 void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL ); src 输入数组。 dst 输出数组。 mask 操作掩码是8比特单通道的数组,它指定了输出数组中被改变的元素。 函数cvCopy从输入数组中复制选定的成分到输出数组: 如果mask(I)!=0,则dst(I)=src(I)。 如果输入输出数组中的一个是IplImage类型的话,其ROI和COI将被使用。输入输出数组必须是同样的类型、维数和大小。函数也可以用来复制散列数组(这种情况下不支持mask)。 例子: #include "cv.h"' #include "cxcore.h" #include "highgui.h" #include <iostream> using namespace std; int main () { IplImage* img = cvLoadImage("car11.bmp",-1); IplImage* biimg = cvCreateImage(cvGetSize(img),img->depth,img->nChannels); CvScalar s; int sum=0; for (int i=0;i<img->height;i++) { for (int j=0;j<img->width;j++) { s = cvGet2D(img,i,j); sum = (s.val[0]+s.val[1]+s.val[2])/3; if (sum > 100) { s.val[0]=s.val[1]=s.val[2]=255; cvSet2D(img,i,j,s); } else { s.val[0]=s.val[1]=s.val[2]=0; cvSet2D(img,i,j,s); } } } cvCopy(img,biimg); cvSaveImage("combibi.JPG",biimg); cvNamedWindow("imagebinary"); cvShowImage("imagebinary",biimg); cvWaitKey(0); cvDestroyWindow("imagebinary"); cvReleaseImage(&img); cvReleaseImage(&biimg); } 5、 阈值化函数 cvThreshold是opencv库中的一个函数 作用 函数 cvThreshold 对单通道数组应用固定阈值操作。该函数的典型应用是对灰度图像进行阈值操作得到二值图像。(cvCmpS 也可以达到此目的) 或者是去掉噪声,例如过滤很小或很大象素值的图像点。本函数支持的对图像取阈值的方法由 threshold_type 确定。 形式:void cvThreshold( const CvArr* src,CvArr* dst,double threshold,double max_value,int threshold_type ); 参数说明 src:原始数组 (单通道 , 8-bit of 32-bit 浮点数)。 dst:输出数组,必须与 src 的类型一致,或者为 8-bit。 threshold:阈值 max_value:使用 CV_THRESH_BINARY 和 CV_THRESH_BINARY_INV 的最大值。 threshold_type:阈值类型 threshold_type=CV_THRESH_BINARY:如果 src(x,y)>threshold ,dst(x,y) = max_value; 否则,dst(x,y)=0; threshold_type=CV_THRESH_BINARY_INV:如果 src(x,y)>threshold,dst(x,y) = 0; 否则,dst(x,y) = max_value. threshold_type=CV_THRESH_TRUNC:如果 src(x,y)>threshold,dst(x,y) = threshold; 否则dst(x,y) = src(x,y). threshold_type=CV_THRESH_TOZERO:如果src(x,y)>threshold,dst(x,y) = src(x,y) ; 否则 dst(x,y) = 0。 threshold_type=CV_THRESH_TOZERO_INV:如果 src(x,y)>threshold,dst(x,y) = 0 ; 否则dst(x,y) = src(x,y). cvAdaptiveThreshold函数 AdaptiveThreshold 自适应阈值方法 void cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value, int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C, int threshold_type=CV_THRESH_BINARY, int block_size=3, double param1=5 ); src: 输入图像. dst: 输出图像. max_value: 使用 CV_THRESH_BINARY 和 CV_THRESH_BINARY_INV 的最大值. adaptive_method: 自适应阈值算法使用:CV_ADAPTIVE_THRESH_MEAN_C 或 CV_ADAPTIVE_THRESH_GAUSSIAN_C (见讨论). threshold_type 取阈值类型:必须是下者之一 CV_THRESH_BINARY, CV_THRESH_BINARY_INV block_size 用来计算阈值的象素邻域大小: 3, 5, 7, ... param1 与方法有关的参数。对方法 CV_ADAPTIVE_THRESH_MEAN_C 和 CV_ADAPTIVE_THRESH_GAUSSIAN_C, 它是一个从均值或加权均值提取的常数(见讨论), 尽管它可以是负数。 cvFindContours函数 函数cvFindContours从二值图像中检索轮廓,并返回检测到的轮廓的个数。first_contour的值由函数填充返回,它的值将为第一个外轮廓的指针,当没有轮廓被检测到时为NULL。其它轮廓可以使用h_next和v_next连接,从first_contour到达。 简介 int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour, int header_size=sizeof(CvContour), int mode=CV_RETR_LIST, int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,0) ); Image: 8比特单通道的源二值图像。非零像素作为1处理,0像素保存不变。从一个灰度图像得到二值图像的函数有:cvThreshold,cvAdaptiveThreshold和cvCanny。 Storage:返回轮廓的容器。 first_contour:输出参数,用于存储指向第一个外接轮廓。 header_size:header序列的尺寸.如果选择method = CV_CHAIN_CODE, 则header_size >= sizeof(CvChain);其他,则 header_size >= sizeof(CvContour)。 Mode: CV_RETR_EXTERNAL:只检索最外面的轮廓; CV_RETR_LIST:检索所有的轮廓,并将其放入list中; CV_RETR_CCOMP:检索所有的轮廓,并将他们组织为两层:顶层是各部分的外部边界,第二层是空洞的边界; CV_RETR_TREE:检索所有的轮廓,并重构嵌套轮廓的整个层次。 蓝色表示v_next,绿色表示h_next Method: 边缘近似方法(除了CV_RETR_RUNS使用内置的近似,其他模式均使用此设定的近似算法)。可取值如下: CV_CHAIN_CODE:以Freeman链码的方式输出轮廓,所有其他方法输出多边形(顶点的序列)。 CV_CHAIN_APPROX_NONE:将所有的连码点,转换成点。 CV_CHAIN_APPROX_SIMPLE:压缩水平的、垂直的和斜的部分,也就是,函数只保留他们的终点部分。 CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS:使用the flavors of Teh-Chin chain近似算法 的一种。 CV_LINK_RUNS:通过连接水平段的1,使用完全不同的边缘提取算法。使用CV_RETR_LIST检索模式能使用此方法。 Offset: 偏移量,用于移动所有轮廓点。当轮廓是从图像的ROI提取的,并且需要在整个图像中分析时,这个参数将很有用。 讨论部分cvDrawContours中的案例显示了任何使用轮廓检测连通区域。轮廓可以用于形状分析和目标识别——可以参考文件夹OpenCV sample中的squares.c cvDrawContours函数 cvDrawContours:在图像上绘制外部和内部轮廓 函数cvDrawContours用于在图像上绘制外部和内部轮廓。当thickness >= 0 时,绘制轮廓线;否则填充由轮廓包围的部分。 void cvDrawContours( CvArr *img, CvSeq* contour, CvScalar external_color, CvScalar hole_color, int max_level, int thickness=1, int line_type=8, CvPoint offset=cvPoint(0,0) ); Img:要在其上绘制轮廓的图像。和在其他绘图函数里一样,轮廓是ROI的修剪结果。 Contour:指向第一个轮廓的指针。 external_color:外轮廓的颜色。 hole_color:内轮廓的颜色。 max_level:画轮廓的最大层数。如果是0,只绘制contour;如果是1,将绘制contour后和contour同层的所有轮廓;如果是2,绘制contour后所有同层和低一层的轮廓,以此类推;如果值是负值,则函数并不绘制contour后的轮廓,但是将画出其子轮廓,一直到abs(max_level) - 1层。 Thickness:绘制轮廓线的宽度。如果为负值(例如,等于CV_FILLED),则contour内部将被绘制。 line_type:轮廓线段的类型,具体查看cvLine的描述。 Offset:按给定值移动所有点的坐标。 cvCreateMemStorage函数 CvMemStorage *storage=cvCreateMemStorage(block_size); 用来创建一个内存存储器,来统一管理各种动态对象的内存。 函数返回一个新创建的内存存储器指针。 参数block_size对应内存器中每个内存块的大小,为0时内存块默认大小为64k。 CvSeq函数 CvSeq* cvCreateSeq(int seq_flags,int header_size,int elem_size,CvMemStorage* storage) 功能:创建一序列 说明:CvSeq本身就是一个可增长的序列,不是固定的序列 参数:seq_flags为序列的符号标志。如果序列不会被传递给任何使用特定序列的函数,那么将它设为0,否则从预定义的序列类型中选择一合适的类型。 Header_size为序列头部的大小;必须大于或等于sizeof(CvSeq)。如果制定了类型或它的扩展名,则此类型必须适合基类的头部大小。 Elem_size为元素的大小,以字节计。这个大小必须与序列类型(由seq_flags指定)相一致。例如,对于一个点的序列,元素类型 CV_SEQ_ELTYPE_POINT应当被指定,参数elem_size必须等同于sizeof(CvPoint)。Storage为指向前面定义的内存存储器. CvSeq*概述 对于CvSeq这一结构体,又称为可动态增长元素序列(OpenCV_1.0已发生改变,详见cxtypes.h) Growable sequence of elements。 CvSeq定义复杂,首先,定义CV_SEQUENCE_FIELDS()。 #define CV_SEQUENCE_FIELDS() \ int flags; /* micsellaneous flags */ \ int header_size; /* size of sequence header */ \ struct CvSeq* h_prev; /* previous sequence */ \ struct CvSeq* h_next; /* next sequence */ \ struct CvSeq* v_prev; /* 2nd previous sequence */ \ struct CvSeq* v_next; /* 2nd next sequence */ \ int total; /* total number of elements */ \ int elem_size;/* size of sequence element in bytes */ \ char* block_max;/* maximal bound of the last block */ \ char* ptr; /* current write pointer */ \ int delta_elems; /* how many elements allocated when the sequence grows (sequence granularity) */ \ CvMemStorage* storage; /* where the seq is stored */ \ CvSeqBlock* free_blocks; /* free blocks list */ \ CvSeqBlock* first; /* pointer to the first sequence block */ 而CvSeq可以表达成: typedef struct CvSeq { CV_SEQUENCE_FIELDS() } CvSeq; cvCanny函数 void cvCanny( const CvArr* image,CvArr* edges,double threshold1,double threshold2, int aperture_size=3 ); 参数说明: image :输入单通道图像(可以是彩色图像)对于多通道的图像可以用cvCvtColor()修改。 edges :输出的边缘图像 ,也是单通道的,但是是黑白的 threshold1: 第一个阈值 threshold2 :第二个阈值 aperture_size Sobel :算子内核大小 函数 cvCanny 采用 Canny 算法发现输入图像的边缘而且在输出图像中标识这些边缘。threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。 cvErode函数 cvErode,是opencv库中的一个函数。函数形式为:void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );研究方法:src:输入图像。dst:输出图像。element:用于腐蚀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素,iterations:腐蚀的次数。 特点: 函数可以是本地操作,不需另外开辟存储空间的意思。腐蚀可以重复进行 (iterations) 次. 对彩色图像,每个彩色通道单独处理。 CreateStructuringElementEx 创建结构元素;ReleaseStructuringElement 删除结构元素。 一般和cvDilate一起使用;void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 ); 一起使用的效果是: cvErode()腐蚀后cvDilate()膨胀,叫作开操作,那些离散点或游丝线、毛刺就被过滤, cvDilate()膨胀后cvErode()腐蚀,叫作闭操作,那些断裂处就被缝合。 函数 cvErode 对输入图像使用指定的结构元素进行腐蚀,该结构元素决定每个具有最小值像素点的邻域形状: dst=erode(src,element): dst(x,y)=min((x',y') in element))src(x+x',y+y') cvDilate函数 函数名:cvDilate 接口形式: void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 ); 3参数说明: src 输入图像。 dst 输出图像。 element 结构元素。若为 NULL, 则使用默认的3×3 长方形,锚点在中心的结构元素,进行膨胀运算。 iterations 膨胀的次数,膨胀可以重复进行iterations次。对彩色图像,每个彩色通道单独处理。 函数功能: 函数 cvDilate 对输入图像使用指定的结构元进行膨胀。具体操作是:将输入图像与结构元素(核)进行卷积,计算结构元素覆盖的区域的像素点最大值,并把这个最大值赋值给参考点(锚点)所指定的像素。 使用任意结构元素膨胀图像,函数在调用中可以在输入图像上直接进行操作,如采用如下方式调用:cvDilate (img1, img1); cvHoughCircles函数 函数 CvSeq *cvHoughCircles(CvArr *image,void *circle_storage,int method,double dp,double min_dist,double param1,double param2,int min_radius,int max_radius) 参数 image:输入8bit(灰度)图像,其内容可被函数所改变 circle_storage:检测到的圆存储仓,可以是内存存储仓 (此种情况下,一个线段序列在存储仓中被创建,并且由函数返回)或者是包含圆参数的特殊类型的具有单行/单列的CV_32FC3型矩阵(CvMat*). 矩阵头为函数所修改,使得它的 cols/rows 将包含一组检测到的圆。如果 circle_storage 是矩阵,而实际圆的数目超过矩阵尺寸,那么最大可能数目的圆被返回,每个圆由三个浮点数表示:圆心坐标(x,y)和半径.). method:Hough 变换方式,目前只支持CV_HOUGH_GRADIENT, which is basically 21HT, described in [Yuen03]. dp:寻找圆弧圆心的累计分辨率,这个参数允许创建一个比输入图像分辨率低的累加器。(这样做是因为有理由认为图像中存在的圆会自然降低到与图像宽高相同数量的范畴)。如果dp设置为1,则分辨率是相同的;如果设置为更大的值(比如2),累加器的分辨率受此影响会变小(此情况下为一半)。dp的值不能比1小。 min_dist:该参数是让算法能明显区分的两个不同圆之间的最小距离。 param1:用于Canny的边缘阀值上限,下限被置为上限的一半。 param2:累加器的阀值。 The second method-specific parameter. In case of CV_HOUGH_GRADIENT it is accumulator threshold at the center detection stage. The smaller it is, the more false circles may be detected. Circles, corresponding to the larger accumulator values, will be returned first. min_radius:最小圆半径。 max_radius:最大圆半径。[1] 说明 该函数用Hough变换在二值图像中中寻找圆,成功时返回CvSeq指针。 25、 垂直投影和
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服