首页 opencv中文综合手册

opencv中文综合手册

举报
开通vip

opencv中文综合手册目录HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E6.A2.AF.E5.BA.A6.E3.80.81.E8.BE.B9.E7.BC.98.E5.92.8C.E8.A7.92.E7.82.B9#.E6.A2.AF.E5.BA.A6.E3.80.81.E8.BE.B9.E7.BC.98.E5.92.8C.E8.A7.92.E7.82.B9"1梯度、边沿和角点HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"S...

opencv中文综合手册
目录HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E6.A2.AF.E5.BA.A6.E3.80.81.E8.BE.B9.E7.BC.98.E5.92.8C.E8.A7.92.E7.82.B9#.E6.A2.AF.E5.BA.A6.E3.80.81.E8.BE.B9.E7.BC.98.E5.92.8C.E8.A7.92.E7.82.B9"1梯度、边沿和角点HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Sobel#Sobel"1.1SobelHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Laplace#Laplace"1.2LaplaceHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Canny#Canny"1.3CannyHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"PreCornerDetect#PreCornerDetect"1.4PreCornerDetectHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CornerEigenValsAndVecs#CornerEigenValsAndVecs"1.5CornerEigenValsAndVecsHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CornerMinEigenVal#CornerMinEigenVal"1.6CornerMinEigenValHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CornerHarris#CornerHarris"1.7CornerHarrisHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"FindCornerSubPix#FindCornerSubPix"1.8FindCornerSubPixHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GoodFeaturesToTrack#GoodFeaturesToTrack"1.9GoodFeaturesToTrackHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E9.87.87.E6.A0.B7.E3.80.81.E6.8F.92.E5.80.BC.E5.92.8C.E5.87.A0.E4.BD.95.E5.8F.98.E6.8D.A2#.E9.87.87.E6.A0.B7.E3.80.81.E6.8F.92.E5.80.BC.E5.92.8C.E5.87.A0.E4.BD.95.E5.8F.98.E6.8D.A2"2采样、插值和几何变换HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"InitLineIterator#InitLineIterator"2.1InitLineIteratorHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"SampleLine#SampleLine"2.2SampleLineHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GetRectSubPix#GetRectSubPix"2.3GetRectSubPixHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GetQuadrangleSubPix#GetQuadrangleSubPix"2.4GetQuadrangleSubPixHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Resize#Resize"2.5ResizeHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"WarpAffine#WarpAffine"2.6WarpAffineHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GetAffineTransform#GetAffineTransform"2.7GetAffineTransformHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"2DRotationMatrix#2DRotationMatrix"2.82DRotationMatrixHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"WarpPerspective#WarpPerspective"2.9WarpPerspectiveHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"WarpPerspectiveQMatrix#WarpPerspectiveQMatrix"2.10WarpPerspectiveQMatrixHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GetPerspectiveTransform#GetPerspectiveTransform"2.11GetPerspectiveTransformHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Remap#Remap"2.12RemapHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"LogPolar#LogPolar"2.13LogPolarHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E5.BD.A2.E6.80.81.E5.AD.A6.E6.93.8D.E4.BD.9C#.E5.BD.A2.E6.80.81.E5.AD.A6.E6.93.8D.E4.BD.9C"3形态学操作HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CreateStructuringElementEx#CreateStructuringElementEx"3.1CreateStructuringElementExHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"ReleaseStructuringElement#ReleaseStructuringElement"3.2ReleaseStructuringElementHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Erode#Erode"3.3ErodeHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Dilate#Dilate"3.4DilateHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"MorphologyEx#MorphologyEx"3.5MorphologyExHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E6.BB.A4.E6.B3.A2.E5.99.A8.E4.B8.8E.E8.89.B2.E5.BD.A9.E7.A9.BA.E9.97.B4.E5.8F.98.E6.8D.A2#.E6.BB.A4.E6.B3.A2.E5.99.A8.E4.B8.8E.E8.89.B2.E5.BD.A9.E7.A9.BA.E9.97.B4.E5.8F.98.E6.8D.A2"4滤波器与色彩空间变换HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Smooth#Smooth"4.1SmoothHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Filter2D#Filter2D"4.2Filter2DHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CopyMakeBorder#CopyMakeBorder"4.3CopyMakeBorderHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Integral#Integral"4.4IntegralHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CvtColor#CvtColor"4.5CvtColorHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Threshold#Threshold"4.6ThresholdHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"AdaptiveThreshold#AdaptiveThreshold"4.7AdaptiveThresholdHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E9.87.91.E5.AD.97.E5.A1.94.E5.8F.8A.E5.85.B6.E5.BA.94.E7.94.A8#.E9.87.91.E5.AD.97.E5.A1.94.E5.8F.8A.E5.85.B6.E5.BA.94.E7.94.A8"5金字塔及其应用HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"PyrDown#PyrDown"5.1PyrDownHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"PyrUp#PyrUp"5.2PyrUpHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E8.BF.9E.E6.8E.A5.E9.83.A8.E4.BB.B6#.E8.BF.9E.E6.8E.A5.E9.83.A8.E4.BB.B6"6连接部件HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CvConnectedComp#CvConnectedComp"6.1CvConnectedCompHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"FloodFill#FloodFill"6.2FloodFillHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"FindContours#FindContours"6.3FindContoursHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"StartFindContours#StartFindContours"6.4StartFindContoursHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"FindNextContour#FindNextContour"6.5FindNextContourHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"SubstituteContour#SubstituteContour"6.6SubstituteContourHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"EndFindContours#EndFindContours"6.7EndFindContoursHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"PyrSegmentation#PyrSegmentation"6.8PyrSegmentationHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"PyrMeanShiftFiltering#PyrMeanShiftFiltering"6.9PyrMeanShiftFilteringHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Watershed#Watershed"6.10WatershedHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E5.9B.BE.E5.83.8F.E4.B8.8E.E8.BD.AE.E5.BB.93.E7.9F.A9#.E5.9B.BE.E5.83.8F.E4.B8.8E.E8.BD.AE.E5.BB.93.E7.9F.A9"7图像与轮廓矩HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Moments#Moments"7.1MomentsHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GetSpatialMoment#GetSpatialMoment"7.2GetSpatialMomentHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GetCentralMoment#GetCentralMoment"7.3GetCentralMomentHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GetNormalizedCentralMoment#GetNormalizedCentralMoment"7.4GetNormalizedCentralMomentHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GetHuMoments#GetHuMoments"7.5GetHuMomentsHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E7.89.B9.E6.AE.8A.E5.9B.BE.E5.83.8F.E5.8F.98.E6.8D.A2#.E7.89.B9.E6.AE.8A.E5.9B.BE.E5.83.8F.E5.8F.98.E6.8D.A2"8特殊图像变换HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"HoughLines#HoughLines"8.1HoughLinesHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"HoughCircles#HoughCircles"8.2HoughCirclesHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"DistTransform#DistTransform"8.3DistTransformHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"Inpaint#Inpaint"8.4InpaintHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E7.9B.B4.E6.96.B9.E5.9B.BE#.E7.9B.B4.E6.96.B9.E5.9B.BE"9直方图HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CvHistogram#CvHistogram"9.1CvHistogramHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CreateHist#CreateHist"9.2CreateHistHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"SetHistBinRanges#SetHistBinRanges"9.3SetHistBinRangesHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"ReleaseHist#ReleaseHist"9.4ReleaseHistHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"ClearHist#ClearHist"9.5ClearHistHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"MakeHistHeaderForArray#MakeHistHeaderForArray"9.6MakeHistHeaderForArrayHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"QueryHistValue_1D#QueryHistValue_1D"9.7QueryHistValue_1DHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GetHistValue_1D#GetHistValue_1D"9.8GetHistValue_1DHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"GetMinMaxHistValue#GetMinMaxHistValue"9.9GetMinMaxHistValueHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"NormalizeHist#NormalizeHist"9.10NormalizeHistHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"ThreshHist#ThreshHist"9.11ThreshHistHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CompareHist#CompareHist"9.12CompareHistHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CopyHist#CopyHist"9.13CopyHistHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CalcHist#CalcHist"9.14CalcHistHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CalcBackProject#CalcBackProject"9.15CalcBackProjectHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CalcBackProjectPatch#CalcBackProjectPatch"9.16CalcBackProjectPatchHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CalcProbDensity#CalcProbDensity"9.17CalcProbDensityHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"EqualizeHist#EqualizeHist"9.18EqualizeHistHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l".E5.8C.B9.E9.85.8D#.E5.8C.B9.E9.85.8D"10匹配HYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"MatchTemplate#MatchTemplate"10.1MatchTemplateHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"MatchShapes#MatchShapes"10.2MatchShapesHYPERLINK"http://www.rosoo.net/a/04/9157.html"\l"CalcEMD2#CalcEMD2"10.3CalcEMD2梯度、边沿和角点Sobel使用扩展Sobel算子计算一阶、二阶、三阶或混合图像差分voidcvSobel(constCvArr*src,CvArr*dst,intxorder,intyorder,intaperture_size=3);src输入图像.dst输出图像.xorderx方向上差分阶数yordery方向上差分阶数aperture_size扩展Sobel核大小,必要是1,3,5或7。除了尺寸为1,其他状况下,aperture_size×aperture_size可分离内核将用来计算差分。对aperture_size=1状况,使用3x1或1x3内核(不进行高斯平滑操作)。这里有一种特殊变量CV_SCHARR(=-1),相应3x3Scharr滤波器,可以给出比3x3Sobel滤波更精准成果。Scharr滤波器系数是:对x-方向或矩阵转置后对y-方向。函数cvSobel通过对图像用相应内核进行卷积操作来计算图像差分:由于Sobel算子结合了Gaussian平滑和微分,因此,其成果或多或少对噪声有一定鲁棒性。普通状况,函数调用采用如下参数(xorder=1,yorder=0,aperture_size=3)或(xorder=0,yorder=1,aperture_size=3)来计算一阶x-或y-方向图像差分。第一种状况相应:核。第二种相应:或者核选则依赖于图像原点定义(origin来自IplImage构造定义)。由于该函数不进行图像尺度变换,因此和输入图像(数组)相比,输出图像(数组)元素普通具备更大绝对数值(译者注:即像素位深)。为防止溢出,当输入图像是8位,规定输出图像是16位。固然可以用函数cvConvertScale或cvConvertScaleAbs转换为8位。除了8-位图像,函数也接受32-位浮点数图像。所有输入和输出图像都必要是单通道,并且具备相似图像尺寸或者ROI尺寸。Laplace计算图像Laplacian变换voidcvLaplace(constCvArr*src,CvArr*dst,intaperture_size=3);src输入图像.dst输出图像.aperture_size核大小(与cvSobel中定义同样).函数cvLaplace计算输入图像Laplacian变换,办法是先用sobel算子计算二阶x-和y-差分,再求和:对aperture_size=1则给出最快计算成果,相称于对图像采用如下内核做卷积:类似于cvSobel函数,该函数也不作图像尺度变换,所支持输入、输出图像类型组合和cvSobel一致。Canny采用Canny算法做边沿检测voidcvCanny(constCvArr*image,CvArr*edges,doublethreshold1,doublethreshold2,intaperture_size=3);image单通道输入图像.edges单通道存储边沿输出图像threshold1第一种阈值threshold2第二个阈值aperture_sizeSobel算子内核大小(见cvSobel).函数cvCanny采用CANNY算法发现输入图像边沿并且在输出图像中标记这些边沿。threshold1和threshold2当中小阈值用来控制边沿连接,大阈值用来控制强边沿初始分割。注意事项:cvCanny只接受单通道图像作为输入。外部链接:典型canny自调节阈值算法一种opencv实现见HYPERLINK""\o""在OpenCV中自适应拟定canny算法分割门限PreCornerDetect计算用于角点检测特性图,voidcvPreCornerDetect(constCvArr*image,CvArr*corners,intaperture_size=3);image输入图像.corners保存候选角点特性图aperture_sizeSobel算子核大小(见cvSobel).函数cvPreCornerDetect计算函数其中D 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达一阶图像差分,表达二阶图像差分。角点被以为是函数局部最大值://假设图像格式为浮点数IplImage*corners=cvCloneImage(image);IplImage*dilated_corners=cvCloneImage(image);IplImage*corner_mask=cvCreateImage(cvGetSize(image),8,1);cvPreCornerDetect(image,corners,3);cvDilate(corners,dilated_corners,0,1);cvSubS(corners,dilated_corners,corners);cvCmpS(corners,0,corner_mask,CV_CMP_GE);cvReleaseImage(&corners);cvReleaseImage(&dilated_corners);CornerEigenValsAndVecs计算图像块特性值和特性向量,用于角点检测voidcvCornerEigenValsAndVecs(constCvArr*image,CvArr*eigenvv,intblock_size,intaperture_size=3);image输入图像.eigenvv保存成果数组。必要比输入图像宽6倍。block_size邻域大小(见讨论).aperture_sizeSobel算子核尺寸(见cvSobel).对每个象素,函数cvCornerEigenValsAndVecs考虑block_size×block_size大小邻域S(p),然后在邻域上计算图像差分有关矩阵:然后它计算矩阵特性值和特性向量,并且按如下方式(λ1,λ2,x1,y1,x2,y2)存储这些值到输出图像中,其中λ1,λ2-M特性值,没有排序(x1,y1)-特性向量,对λ1(x2,y2)-特性向量,对λ2CornerMinEigenVal计算梯度矩阵最小特性值,用于角点检测voidcvCornerMinEigenVal(constCvArr*image,CvArr*eigenval,intblock_size,intaperture_size=3);image输入图像.eigenval保存最小特性值图像.与输入图像大小一致block_size邻域大小(见讨论cvCornerEigenValsAndVecs).aperture_sizeSobel算子核尺寸(见cvSobel).当输入图像是浮点数格式时,该参数表达用来计算差分固定浮点滤波器个数.函数cvCornerMinEigenVal与cvCornerEigenValsAndVecs类似,但是它仅仅计算和存储每个象素点差分有关矩阵最小特性值,即前一种函数min(λ1,λ2)CornerHarris哈里斯(Harris)角点检测voidcvCornerHarris(constCvArr*image,CvArr*harris_responce,intblock_size,intaperture_size=3,doublek=0.04);image输入图像。harris_responce存储哈里斯(Harris)检测responces图像。与输入图像等大。block_size邻域大小(见关于cvCornerEigenValsAndVecs讨论)。aperture_size扩展Sobel核大小(见cvSobel)。格式.当输入图像是浮点数格式时,该参数表达用来计算差分固定浮点滤波器个数。kharris检测器自由参数。参见下面公式。函数cvCornerHarris对输入图像进行Harris边界检测。类似于cvCornerMinEigenVal和cvCornerEigenValsAndVecs。对每个像素,在block_size*block_size大小邻域上,计算其2*2梯度共变矩阵(或有关异变矩阵)M。然后,将det(M)-k*trace(M)2(这里2是平方)保存到输出图像中。输入图像中角点在输出图像中由局部最大值表达。FindCornerSubPix精准角点位置voidcvFindCornerSubPix(constCvArr*image,CvPoint2D32f*corners,intcount,CvSizewin,CvSizezero_zone,CvTermCriteriacriteria);image输入图像.corners输入角点初始坐标,也存储精准输出坐标count角点数目win搜索窗口一半尺寸。如果win=(5,5)那么使用5*2+1×5*2+1=11×11大小搜索窗口zero_zone死区一半尺寸,死区为不对搜索区中央位置做求和运算区域。它是用来避免自有关矩阵浮现某些也许奇异性。当值为(-1,-1)表达没有死区。criteria求角点迭代过程终结条件。即角点位置拟定,要么迭代数不不大于某个设定值,或者是精准度达到某个设定值。criteria可以是最大迭代数目,或者是设定精准度,也可以是它们组合。函数cvFindCornerSubPix通过迭代来发现具备子象素精度角点位置,或如图所示放射鞍点(radialsaddlepoints)。子象素级角点定位实现是基于对向量正交性观测而实现,即从中央点q到其邻域点p向量和p点处图像梯度正交(服从图像和测量噪声)。考虑如下表达式:εi=DIpiT•(q-pi)其中,DIpi表达在q一种邻域点pi处图像梯度,q值通过最小化εi得到。通过将εi设为0,可以建立系统方程如下:sumi(DIpi•DIpiT)•q-sumi(DIpi•DIpiT•pi)=0其中q邻域(搜索窗)中梯度被累加。调用第一种梯度参数G和第二个梯度参数b,得到:q=G-1•b该算法将搜索窗中心设为新中心q,然后迭代,直到找到低于某个阈值点中心位置。GoodFeaturesToTrack拟定图像强角点voidcvGoodFeaturesToTrack(constCvArr*image,CvArr*eig_image,CvArr*temp_image,CvPoint2D32f*corners,int*corner_count,doublequality_level,doublemin_distance,constCvArr*mask=NULL);image输入图像,8-位或浮点32-比特,单通道eig_image暂时浮点32-位图像,尺寸与输入图像一致temp_image此外一种暂时图像,格式与尺寸与eig_image一致corners输出参数,检测到角点corner_count输出参数,检测到角点数目quality_level最大最小特性值乘法因子。定义可接受图像角点最小质量因子。min_distance限制因子。得到角点最小距离。使用Euclidian距离maskROI:感兴趣区域。函数在ROI中计算角点,如果mask为NULL,则选取整个图像。必要为单通道灰度图,大小与输入图像相似。mask相应点不为0,表达计算该点。函数cvGoodFeaturesToTrack在图像中寻找具备大特性值角点。该函数,一方面用cvCornerMinEigenVal计算输入图像每一种象素点最小特性值,并将成果存储到变量eig_image中。然后进行非最大值抑制(仅保存3x3邻域中局部最大值)。下一步将最小特性值不大于quality_level•max(eig_image(x,y))排除掉。最后,函数保证所有发现角点之间具备足够距离,(最强角点第一种保存,然后检查新角点与已有角点之间距离不不大于min_distance)。采样、插值和几何变换InitLineIterator初始化线段迭代器intcvInitLineIterator(constCvArr*image,CvPointpt1,CvPointpt2,CvLineIterator*line_iterator,intconnectivity=8);image带采线段输入图像.pt1线段起始点pt2线段结束点line_iterator指向线段迭代器状态构造指针connectivity被扫描线段连通数,4或8.函数cvInitLineIterator初始化线段迭代器,并返回两点之间象素点数目。两个点必要在图像内。当迭代器初始化后,连接两点光栅线上所有点,都可以持续通过调用CV_NEXT_LINE_POINT来得到。线段上点是使用4-连通或8-连通运用Bresenham算法逐点计算。例子:使用线段迭代器计算彩色线上象素值和CvScalarsum_line_pixels(IplImage*image,CvPointpt1,CvPointpt2){CvLineIteratoriterator;intblue_sum=0,green_sum=0,red_sum=0;intcount=cvInitLineIterator(image,pt1,pt2,&iterator,8);for(inti=0;iimageData);y=offset/image->widthStep;x=(offset-y*image->widthStep)/(3*sizeof(uchar)/*sizeofpixel*/);printf("(%d,%d)\n",x,y);}}returncvScalar(blue_sum,green_sum,red_sum);}SampleLine将图像上某一光栅线上像素数据读入缓冲区intcvSampleLine(constCvArr*image,CvPointpt1,CvPointpt2,void*buffer,intconnectivity=8);image输入图像pt1光栅线段起点pt2光栅线段终点buffer存储线段点缓存区,必要有足够大小来存储点max(|pt2.x-pt1.x|+1,|pt2.y-pt1.y|+1):8-连通状况下,或者|pt2.x-pt1.x|+|pt2.y-pt1.y|+1:4-连通状况下.connectivity线段连通方式,4or8.函数cvSampleLine实现了线段迭代器一种特殊应用。它读取由pt1和pt2两点拟定线段上所有图像点,涉及终点,并存储到缓存中。GetRectSubPix从图像中提取象素矩形,使用子象素精度voidcvGetRectSubPix(constCvArr*src,CvArr*dst,CvPoint2D32fcenter);src输入图像.dst提取矩形.center提取象素矩形中心,浮点数坐标。中心必要位于图像内部.函数cvGetRectSubPix从图像src中提取矩形:dst(x,y)=src(x+center.x-(width(dst)-1)*0.5,y+center.y-(height(dst)-1)*0.5)其中非整数象素点坐标采用双线性插值提取。对多通道图像,每个通道独立单独完毕提取。尽管函数规定矩形中心一定要在输入图像之中,但是有也许浮现矩形一某些超过图像边界状况,这时,该函数复制边界模识(hunnish:即用于矩形相交图像边界线段象素来代替矩形超越某些象素)。GetQuadrangleSubPix提取象素四边形,使用子象素精度voidcvGetQuadrangleSubPix(constCvArr*src,CvArr*dst,constCvMat*map_matrix);src输入图像.dst提取四边形.map_matrix3×2变换矩阵[A|b](见讨论).函数cvGetQuadrangleSubPix以子象素精度从图像src中提取四边形,使用子象素精度,并且将成果存储于dst,计算公式是:dst(x+width(dst)/2,y+height(dst)/2)=src(A11x+A12y+b1,A21x+A22y+b2)其中A和b均来自映射矩阵(译者注:A,b为几何形变参数),映射矩阵为:其中在非整数坐标 象素点值通过双线性变换得到。当函数需要图像边界外像素点时,使用重复边界模式(replicationbordermode)恢复出所需值。多通道图像每一种通道都单独计算。例子:使用cvGetQuadrangleSubPix进行图像旋转#include"cv.h"#include"highgui.h"#include"math.h"intmain(intargc,char**argv){IplImage*src;/*thefirstcommandlineparametermustbeimagefilename*/if(argc==2&&(src=cvLoadImage(argv[1],-1))!=0){IplImage*dst=cvCloneImage(src);intdelta=1;intangle=0;cvNamedWindow("src",1);cvShowImage("src",src);for(;;){floatm[6];doublefactor=(cos(angle*CV_PI/180.)+1.1)*3;CvMatM=cvMat(2,3,CV_32F,m);intw=src->width;inth=src->height;m[0]=(float)(factor*cos(-angle*2*CV_PI/180.));m[1]=(float)(factor*sin(-angle*2*CV_PI/180.));m[2]=w*0.5f;m[3]=-m[1];m[4]=m[0];m[5]=h*0.5f;cvGetQuadrangleSubPix(src,dst,&M,1,cvScalarAll(0));cvNamedWindow("dst",1);cvShowImage("dst",dst);if(cvWaitKey(5)==27)break;angle=(angle+delta)%360;}}return0;}Resize图像大小变换voidcvResize(constCvArr*src,CvArr*dst,intinterpolation=CV_INTER_LINEAR);src输入图像.dst输出图像.interpolation插值办法:CV_INTER_NN-近来邻插值,CV_INTER_LINEAR-双线性插值(缺省使用)CV_INTER_AREA-使用象素关系重采样。当图像缩小时候,该办法可以避免波纹浮现。当图像放大时,类似于CV_INTER_NN办法..CV_INTER_CUBIC-立方插值.函数cvResize将图像src变化尺寸得到与dst同样大小。若设定ROI,函数将按常规支持ROI.WarpAffine对图像做仿射变换voidcvWarpAffine(constCvArr*src,CvArr*dst,constCvMat*map_matrix,intflags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,CvScalarfillval=cvScalarAll(0));src输入图像.dst输出图像.map_matrix2×3变换矩阵flags插值办法和如下开关选项组合:CV_WARP_FILL_OUTLIERS-填充所有输出图像象素。如果某些象素落在输入图像边界外,那么它们值设定为fillval.CV_WARP_INVERSE_MAP-指定map_matrix是输出图像到输入图像反变换,因而可以直接用来做象素插值。否则,函数从map_matrix得到反变换。fillval用来填充边界外面值函数cvWarpAffine运用下面指定矩阵变换输入图像:如果没有指定CV_WARP_INVERSE_MAP,否则,函数与cvGetQuadrangleSubPix类似,但是不完全相似。cvWarpAffine规定输入和输出图像具备同样数据类型,有更大资源开销(因而对小图像不太适当)并且输出图像某些可以保存不变。而cvGetQuadrangleSubPix可以精准地从8位图像中提取四边形到浮点数缓存区中,具备比较小系统开销,并且总是所有变化输出图像 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 。要变换稀疏矩阵,使用cxcore中函数cvTransform。GetAffineTransform由三对点计算仿射变换CvMat*cvGetAffineTransform(constCvPoint2D32f*src,constCvPoint2D32f*dst,CvMat*map_matrix);src输入图像三角形顶点坐标。dst输出图像相应三角形顶点坐标。map_matrix指向2×3输出矩阵指针。函数cvGetAffineTransform计算满足如下关系仿射变换矩阵:这里,dst(i)=(x'i,y'i),src(i)=(xi,yi),i=0..2.2DRotationMatrix计算二维旋转仿射变换矩阵CvMat*cv2DRotationMatrix(CvPoint2D32fcenter,doubleangle,doublescale,CvMat*map_matrix);center输入图像旋转中心坐标angle旋转角度(度)。正值表达逆时针旋转(坐标原点假设在左上角).scale各项同性尺度因子map_matrix输出2×3矩阵指针函数cv2DRotationMatrix计算矩阵:[αβ|(1-α)*center.x-β*center.y][-βα|β*center.x+(1-α)*center.y]whereα=scale*cos(angle),β=scale*sin(angle)该变换并不变化原始旋转中心点坐标,如果这不是操作目,则可以通过调节平移量变化其坐标(译者注:通过简朴推导可知,仿射变换实现是一方面将旋转中心置为坐标原点,再进行旋转和尺度变换,最后重新将坐标原点设定为输入图像左上角,这里平移量是center.x,center.y).WarpPerspective对图像进行透视变换voidcvWarpPerspective(constCvArr*src,CvArr*dst,constCvMat*map_matrix,intflags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,CvScalarfillval=cvScalarAll(0));src输入图像.dst输出图像.map_matrix3×3变换矩阵flags插值办法和如下开关选项组合:CV_WARP_FILL_OUTLIERS-填充所有缩小图像象素。如果某些象素落在输入图像边界外,那么它们值设定为fillval.CV_WARP_INVERSE_MAP-指定matrix是输出图像到输入图像反变换,因而可以直接用来做象素插值。否则,函数从map_matrix得到反变换。fillval用来填充边界外面值函数cvWarpPerspective运用下面指定矩阵变换输入图像:如果没有指定CV_WARP_INVERSE_MAP,,否则,要变换稀疏矩阵,使用cxcore中函数cvTransform。WarpPerspectiveQMatrix用4个相应点计算透视变换矩阵CvMat*cvWarpPerspectiveQMatrix(constCvPoint2D32f*src,constCvPoint2D32f*dst,CvMat*map_matrix);src输入图像四边形4个点坐标dst输出图像相应四边形4个点坐标map_matrix输出3×3矩阵函数cvWarpPerspectiveQMatrix计算透视变换矩阵,使得:(tix'i,tiy'i,ti)T=matrix•(xi,yi,1)T其中dst(i)=(x'i,y'i),src(i)=(xi,yi),i=0..3.GetPerspectiveTransform由四对点计算透射变换CvMat*cvGetPerspectiveTransform(constCvPoint2D32f*src,constCvPoint2D32f*dst,CvMat*map_matrix);#definecvWarpPerspectiveQMatrixcvGetPerspectiveTransformsrc输入图像四边形顶点坐标。dst输出图像相应四边形顶点坐标。map_matrix指向3×3输出矩阵指针。函数cvGetPerspectiveTransform计算满足如下关系透射变换矩阵: 这里,dst(i)=(x'i,y'i),src(i)=(xi,yi),i=0..3. Remap对图像进行普通几何变换voidcvRemap(constCvArr*src,CvArr*dst,constCvArr*mapx,constCvArr*mapy,intflags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,CvScalarfillval=cvScalarAll(0));src输入图像.dst输出图像.mapxx坐标映射(32fC1image).mapyy坐标映射(32fC1image).flags插值办法和如下开关选项组合:CV_WARP_FILL_OUTLIERS-填充边界外像素.如果输出图像某些象素落在变换后边界外,那么它们值设定为fillval。fillval用来填充边界外面值.函数cvRemap运用下面指定矩阵变换输入图像:dst(x,y)<-src(mapx(x,y),mapy(x,y))与其他几何变换类似,可以使用某些插值办法(由顾客指定,译者注:同cvResize)来计算非整数坐标像素值。LogPolar把图像映射到极指数空间voidcvLogPolar
本文档为【opencv中文综合手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_704284
暂无简介~
格式:doc
大小:778KB
软件:Word
页数:0
分类:建筑/施工
上传时间:2020-05-18
浏览量:20