《学习OpenCV》笔记(一)

来源:互联网 发布:知满天公务员培训 编辑:程序博客网 时间:2024/05/17 08:00

cvLoadImage("greatwave.png",1);返回值是IplImage类型

CvSize2D32f,是CvSize的变体类型,浮点型
CvArr->CvMat->IplImage派生关系
矩阵的创建方法:
cvCreateMat(), cvCreateMatHeader(), cvCreateData(), cvCloneMat()
ROI:感兴趣的区域。ROI的思想是,一旦设定ROI,通常作用于整幅图像的函数便会只对ROI所表示的子图像进行操作。
COI:channel of interest(感兴趣的通道)
设置或取消ROI, 使用cvSetImageROI()和cvResetImageROI()函数。
cvSVD,二维矩阵的奇异值分解
加权相加,
cvAddWeighted(
        const CvArr* src1,
        double alpha,
        const CvArr* src2,
        double beta,
        double gamma,
        CvArr* dst )
可以用来实现alpha融合。
cvConvertScale(),数据类型的转换
色彩的空间转换都用到以下约定:8位图像范围是0~255,16位图像范围是0~65536,浮点数的范围是0.0~1.0。黑白图像转换为彩色图像时,最终图像的所有通道都是相同的;但是逆变换(例如RGB或BGR到灰度),灰度值的计算使用加权公式:
Y=0.299*R+0.587*G+0.114*B
CvSize cvGetSize(const CvArr*  arr),常用,返回CvSize结构
OpenCV提供了一系列的函数帮助我们绘制直线、方形和圆形等。
cvLine(),直线
 cvCircle(),圆形
 cvEllipse(), 椭圆
cvFillPoly(),多边形
cvPutText(),在图像上输出文本
 
Intel公司有一个产品叫做集成性能单元(Integrated Performance Primitives, IPP)库。这个库实际上是一个有着高性能内核的工具箱,它主要用于多媒体处理以及其他计算密集型应用,可发掘处理器架构的计算能力。

HighGUI,一个可移植的图形工具包
cvNamedWindow(),
cvResizeWindow(),
 cvLoadImage(), 
cvSaveImage(), 
cvShowImage(),
 cvMoveWindow(),
 cvDestroyAllWindows(), 
cvWaitKey(), 
在OpenCv中,处理视频时,我们最先了解的就是cvCapture。cvCapture结构包含从摄像机或视频文件中读取帧所需的信息。根据视频来源,我们可以使用下面两个函数之一来初始化CvCapture结构。
CvCapture* cvCreateFileCapture(const char* filename)
CvCapture* cvCreateCameraCapture(int index)
一定要检查函数的返回结果,无法打开,视频编码未知时均返回NULL指针。
int cvGrabFrame(CvCapture* capture)
IplImage* cvRetrieveFrame(CvCapture* capture)
IplImage* cvQueryImage(CvCapture* capture)
void cvReleaseCapture(CvCapture* capture)
double cvGetCaptureProperty()
int cvSetCaptureProperty()

平滑处理:减少图像的噪声或者失真,降低分辨率时,平滑处理是很重要的
cvSmooth()函数实现
图像形态学:膨胀和腐蚀,
cvErode(),腐蚀 
cvDilate(),膨胀
满水填充算法(Flood Fill)
尺寸调整:cvResize()将会对ROI区域调整尺寸,以匹配目标图像,同样,如果目标图像中已设置ROI值,那么cvResize()将会将源图像进行尺寸调整并填充到目标图像的ROI中。默认为线性插值法。可用的插值方法有:最近邻插值、线性插值、区域插值和三次样条插值。
图像金字塔
阈值化
double cvThreshold(
    CvArr* src,
    CvArr* dst,
    double threshold,
    double max_value,
    int threshhold_type
);
自适应阈值
void cvAdaptiveThreshold(
    CvArr* src,
    CvArr* dst,
    double max_val,
    int adaptive_method = CV_ADAPTIVE_THRESH_MEAN_C,
    int threshold_type = CV_THRESH_BINARY,
    int block_size = 3,
    double param1 = 5
);
原创粉丝点击