OPENCV用户手册之图像处理部

上传人:M****1 文档编号:477768453 上传时间:2023-01-02 格式:DOC 页数:8 大小:48KB
返回 下载 相关 举报
OPENCV用户手册之图像处理部_第1页
第1页 / 共8页
OPENCV用户手册之图像处理部_第2页
第2页 / 共8页
OPENCV用户手册之图像处理部_第3页
第3页 / 共8页
OPENCV用户手册之图像处理部_第4页
第4页 / 共8页
OPENCV用户手册之图像处理部_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《OPENCV用户手册之图像处理部》由会员分享,可在线阅读,更多相关《OPENCV用户手册之图像处理部(8页珍藏版)》请在金锄头文库上搜索。

1、OPENCV用户手册之图像处理部分(之二):采样、差值与几何变换(中文翻译) 采样、差值和几何变换翻译:HUNNISH, 阿须数码InitLineIterator初始化线段迭代器int cvInitLineIterator( const CvArr* image, CvPoint pt1, CvPoint pt2, CvLineIterator* line_iterator, int connectivity=8 );image 带线段的图像. pt1 线段起始点 pt2 线段结束点 line_iterator 指向线段迭代器结构的指针 connectivity 被扫描线段的连通数,4 或 8

2、. 函数 cvInitLineIterator 初始化线段迭代器,并返回两点之间的象素点数目。两个点必须在图像内。当迭代器初始化后,连接两点的光栅线上所有点,都可以连续通过调用 CV_NEXT_LINE_POINT 来得到。线段上的点是使用 4连通或8连通利用 Bresenham 算法逐点计算的。例子:使用线段迭代器计算彩色线上象素值的和 CvScalar sum_line_pixels( IplImage* image, CvPoint pt1, CvPoint pt2 ) CvLineIterator iterator; int blue_sum = 0, green_sum = 0, r

3、ed_sum = 0; int count = cvInitLineIterator( image, pt1, pt2, &iterator, 8 ); for( int i = 0; i imageData); y = offset/image-widthStep; x = (offset - y*image-widthStep)/(3*sizeof(uchar) /* size of pixel */); printf(%d,%d)n, x, y ); return cvScalar( blue_sum, green_sum, red_sum ); SampleLine将光栅线读入缓冲区i

4、nt cvSampleLine( const CvArr* image, CvPoint pt1, CvPoint pt2, void* buffer, int connectivity=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 The line connectivity, 4 or 8. 函数 cvSampleL

5、ine 实现了线段迭代器的一个特殊应用。它读取由两点 pt1 和 pt2 确定的线段上的所有图像点,包括终点,并存储到缓存中。GetRectSubPix从图像中提取象素矩形,使用子象素精度void cvGetRectSubPix( const CvArr* src, CvArr* dst, CvPoint2D32f center );src 输入图像. dst 提取的矩形. center 提取的象素矩形的中心,浮点数坐标。中心必须位于图像内部. 函数 cvGetRectSubPix 从图像 src 中提取矩形:dst(x, y) = src(x + center.x - (width(dst)

6、-1)*0.5, y + center.y - (height(dst)-1)*0.5)其中非整数象素点坐标采用双线性差值提取。对多通道图像,每个通道独立单独完成提取。矩形中心必须位于图像内部,而整个矩形可以部分不在图像内。这种情况下,复制的边界模识用来得到图像边界外的象素值(Hunnish:令人费解)GetQuadrangleSubPix提取象素四边形,使用子象素精度void cvGetQuadrangleSubPix( const CvArr* src, CvArr* dst, const CvMat* map_matrix,int fill_outliers=0, CvScalar fi

7、ll_value=cvScalarAll(0) );src 输入图像. dst 提取的四边形. map_matrix 3 2 变换矩阵 A|b (见讨论). fill_outliers 该标志位指定是否对原始图像边界外面的象素点使用复制模式(fill_outliers=0)进行差值或者将其设置为指定值(fill_outliers=1)。 fill_value 对原始图像边界外面的象素设定固定值,当 fill_outliers=1. 函数 cvGetQuadrangleSubPix 从图像 src 中提取四边形,使用子象素精度,并且将结果存储于 dst ,计算公式是:dst(x+width(ds

8、t)/2, y+height(dst)/2)= src( A11x+A12y+b1, A21x+A22y+b2),where A and b are taken from map_matrix | A11 A12 b1 |map_matrix = | | | A21 A22 b2 |其中在非整数坐标 A(x,y)T+b 的象素点值通过双线性变换得到。多通道图像的每一个通道都单独计算.例子:使用 cvGetQuadrangleSubPix 进行图像旋转#include cv.h#include highgui.h#include math.hint main( int argc, char* a

9、rgv ) IplImage* src; /* the first command line parameter must be image file name */ if( argc=2 & (src = cvLoadImage(argv1, -1)!=0) IplImage* dst = cvCloneImage( src ); int delta = 1; int angle = 0; cvNamedWindow( src, 1 ); cvShowImage( src, src ); for(;) float m6; double factor = (cos(angle*CV_PI/18

10、0.) + 1.1)*3; CvMat M = cvMat( 2, 3, CV_32F, m ); int w = src-width; int h = src-height; m0 = (float)(factor*cos(-angle*2*CV_PI/180.); m1 = (float)(factor*sin(-angle*2*CV_PI/180.); m2 = w*0.5f; m3 = -m1; m4 = m0; m5 = h*0.5f; cvGetQuadrangleSubPix( src, dst, &M, 1, cvScalarAll(0); cvNamedWindow( dst

11、, 1 ); cvShowImage( dst, dst ); if( cvWaitKey(5) = 27 ) break; angle = (angle + delta) % 360; return 0;Resize图像大小变换void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );src 输入图像. dst 输出图像. interpolation 差值方法: CV_INTER_NN - 最近邻差值, CV_INTER_LINEAR - 双线性差值 (缺省使用) CV_INTER_ARE

12、A - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大是,类似于 CV_INTER_NN 方法. CV_INTER_CUBIC - 立方差值. 函数 cvResize 将图像 src 改变尺寸得到与 dst 同样大小。若设定 ROI,函数将按常规支持 ROI.WarpAffine对图像做仿射变换void cvWarpAffine( const CvArr* src, CvArr* dst, const CvMat* map_matrix, int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS, CvScalar fillval=cvScalarAll(0) );src 输入图像. dst 输出图像. map_matrix 23 变换矩阵 flags

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号