2016年11月20号 第一次培训
一.调用摄像头
//调用摄像头
VideoCapture cap(1);
//此时用来打开设备,cap(参数为0 打开电脑自带的摄像头.若参数位1 则打开外部链接的摄像头)
while(true)//如果打开成功
{
Mat frame;//创建一个Mat型的参数frame
cap>>frame;
namedWindow("123",0);//创建一个窗口 此时若第二个参数为1 则出现的窗口用户不可调节其大小
imshow("123",frame);//在指定的窗口中显示图像
waitKey(30);//能使imshow正常显示图像
}
1.VideoCapture类:一种是VideoCapture(const string& filename)用来打开视频文件,一种是VideoCapture(int device)用来打开设备。
2.Mat类表示一个 n 维的稠密数值型的单通道或多通道数组。
3.namedWindow函数:用于创建一个窗口。
函数原型是这样的:
void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE );
第一个参数,const string&型的name,即填被用作窗口的标识符的窗口名称。
第二个参数,int 类型的flags ,窗口的标识。
4.imshow函数:指定的窗口中显示一幅图像。即用于在指定的窗口中显示图像。
函数原型是这样的:
void imshow(const string& winname, InputArray mat);
第一个参数,const string&类型的winname,填需要显示的窗口标识名称。
第二个参数,InputArray 类型的mat,填需要显示的图像。
5.waitKey(x)
参数:等待x ms,如果在此期间有按键按下,则立即结束并返回按下按键的
ASCII码,否则返回-1.如果x=0,那么无限等待下去,直到有按键按下
注:在imshow之后如果没有waitKey语句则不会正常显示图像。
二.读取图片
//读取图片
Mat imggray = imread("123.jpeg",1);
cvtColor(imggray,imggray,CV_RGB2GRAY);//把转换成灰度图像
cout<<(int)imggray.at<uchar>(1,1)<<endl;//输出(a,b)的像素
imshow("123",imggray);//显示图片
waitKey(0);
}
图像的载入、显示和输出分别对应三个函数:imread(),namedWindow(),imshow().
1.imread函数,
Mat imread(const string& filename, int flags=1 )
第一个参数:文件的位置(如果只提供文件名,那么文件应该和C++文件在同一目录,否则必须提供图片的全路径。)
2.cvCvtColor(…):颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间的转换,也可以转换为灰度图像。
参数CV_BGR2GRAY是RGB到gray,参数 CV_GRAY2BGR是gray到RGB。
三.矩阵
//矩阵
int row=