写在前面
在我的编程学习过程中,我经常在CSDN上观摩大佬们的博客来提高自己的编程能力和知识,在此之前从未想过写一点东西发出来看看。最近我的学长推荐我写一点东西出来,一是给自己一个记录知识点的平台,二是将自己的观点发表出来让大家斧正。因此在这里也希望各位能够多多指教!!!
起源
前两天有一个刚刚开始学习CV的学弟过来问我一个代码,开始时场面异常和谐,他巴拉巴拉一问,我巴拉巴拉一讲。
结果,临走时学弟问了一句“学长,这行代码是干嘛用的?它的返回值是什么?”(如下)
if(waitKey(30)==27)
{
break;
}
然后,我,,,尴尬了。(也不能说不知道,毕竟学习了那么久了,还是知道大概的:waitKey(30)是等待30ms关闭窗口,或者按下ESC键退出。但是对于waitKey()别的东西就不知道了!!!)
重点
用法解释:
waitKey()函数一共三个用法:①用于循环语句,作为延时函数,即等待一个给定时间(ms)后,关闭图像然后开启下一轮循环;②用于判断语句,在一个给定时间内等待键盘输入,若输入待输入字符则执行相关语句,若超时则关闭图像;③用于显示单张图片,当我们想显示的是一张图片时可以使用waitKey(0),这样就能一直显示了(直到你自己把窗口关掉)。
代码举例
//第一种,用于循环语句
#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
VideoCapture capture(0);//打开一个默认的相机
if(!capture.isOpened()) //检查是否成功打开
return -1;
while(1)
{
Mat frame;
capture>>frame;//从相机读取新一帧
namedWindow("视频");
imshow("视频", frame);//显示图像
waitKey(30);
/*
if(waitKey(30) == 27) //第二种,用于判断语句
break;
*/
}
return 0;
}
第一种方法和第二种方法是有很大区别的,当使用第一种方法时,我们运行程序是关不掉摄像头的,使用第二种时可以通过按下ESC键关掉摄像头。
//第三种,用于判断语句
#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("test.jpg"); //读取图片,有时候相对路径会报错,到时候换成绝对路径就好
namedWindow("test");
imshow("test",img);
waitKey(0);
return 0;
}
写在后面
本次分享到这里就结束了,第一次写文章可能存在一些逻辑错误还望见谅!!!此外本人也是一枚粉嫩嫩的CV新人,请各位大佬多多指教!!!