项目代码学习笔记
1.cvCreateVideoWriter 是创建视频文件写入器的意思。
创建视频文件写入器
typedef struct CvVideoWriter CvVideoWriter;
CvVideoWriter* cvCreateVideoWriter ( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 );
filename 输出视频文件名。
fourcc为 四个字符用来表示压缩帧的cod
2.CvScalar是一个可以用来存放4个double数值的数组。
这个 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 )
3.GetDlgItem,是根据继承关系的函数功能,返回窗口中指定参数ID的子元素的句柄,可以通过返回的句柄对窗口内的子元素进行操作。
根据继承关系,有如下几类:
1).CWindow::GetDlgItem
HWND GetDlgItem( intnID)const;
说明——
参数 nID:接收消息的控件的标识;
返回值:标识所标记的控制窗口句柄;
2).CWnd::GetDlgItem
CWnd* GetDlgItem ( intnID) const;
void CWnd::GetDlgItem( int nID, HWND *phWnd) const;
说明——
参数 nID:接收消息的控件的标识;
参数phWnd:子类窗口的指针;
返回值:标识所标记的控件(或子类窗口)的指针;
Example
// Uses GetDlgItem to return a pointer to a user interface control.
CEdit* pBoxOne;
pBoxOne = (CEdit*) GetDlgItem(IDC_EDIT1);
GotoDlgCtrl(pBoxOne);
3).Windows SDK
HWND GetDlgItem(
HWNDhDlg, // handle to dialog box
intnIDDlgItem// control identifier
);
参数说明:
hDlg:标识含有控件的对话框。
nlDDlgltem:指定将被检索的控件标识符。
返回值:如果函数调用成功则返回值为给定控件的窗口句柄。如果函数调用失败,则返回值为NULL,表示为一个无效的对话框句柄或一个不存在的控件。若想获得更多错误信息,请调用GetLastError函数。
备注:可以通过使用任何父子窗口对来使用GetDlgltem函数,而不仅只是对话框。只要hDlg参数指定一个父窗口,且子窗口有一个独立的标识符(象CreateWindow中hMenu参数指定的或创建子窗口的CreateWindowEx指定的那样),GetDlgltem就会返回一个有效的句柄到子窗口。
Windows CE:GetDlgltem函数只为对话框中的直接于控制工作,它不通过嵌套的对话框来搜寻。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;库文件:user32.lib。
多数以GetDlgitem(控件标识符)来使用
4.GetWindowRect是一个Windows API函数。该函数返回指定窗口的边框矩形的尺寸,函数原型为void GetWindowRect(LPRECT lpRect) const。
该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
5.CClientDC
类CClientDC派生于CDC,在构造时调用了Windows函数GetDC,在析构时调用了ReleaseDC。这意味着和CClientDC对象相关的设备上下文是窗口的客户区。
CClientDC:(客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者访问目标窗口中客户区,其构造函数中包含了GetDC,析构函数中包含了ReleaseDC。
6.BOOL LineTo( HDC hdc, int xEnd, int yEnd );MoveToEx函数和LineTo函数要一起使用才能达到画线的效果,咋看起来这两个函数不相干,我是这样想的,画线要用“笔”,那么MoveToEx()把笔要画的起始位置固定了(x,y)然后要固定终止位置要用到LineTo函数确定终止位置(xend,yend),这样一条线就画出来了。