1,opencv打开摄像头
#include<opencv2/opencv.hpp>
using namespace cv;
int main(){
VideoCapture cap;
cap.open(1); //打开摄像头,序列号是/dev/videoi,i是0,1,2,cap.open(i)
if(!cap.isOpened())
return -1;
Mat frame;
while(1)
{
cap>>frame;//等价于cap.read(frame);
//Canny(frame, frame, 30, 100);//canny边缘检测,去掉这一行就是纯粹的读取摄像头了
//cvtColor(frame, frame, CV_BGR2HSV);//BGR空间转为HSV颜色空间,注意,两者不能同时对同一张图片(在此为frame)进行处理,否则报错
if(frame.empty())
break;
imshow("video", frame);
if(waitKey(20)>0)//按下任意键退出摄像头 因电脑环境而异,有的电脑可能会出现一闪而过的情况
break;
}
cap.release();
destroyAllWindows();//关闭所有窗口
return 0;
}
运行结果如下:
2,flip(旋转180度),transpose(旋转90度)
#include<opencv2/opencv.hpp>
using namespace cv;
int main(){
VideoCapture cap;
cap.open(1); //打开摄像头
if(!cap.isOpened())
return -1;
Mat frame;
Mat src;
while(1)
{
cap>>frame;//等价于cap.read(frame);
//Canny(frame, frame, 30, 100);//canny边缘检测,去掉这一行就是纯粹的读取摄像头了
//cvtColor(frame, frame, CV_BGR2HSV);//BGR空间转为HSV颜色空间,注意,两者不能同时对同一张图片(在此为frame)进行处理,否则报错
if(frame.empty())
break;
//imshow("video", frame);
//rotate 180
// flip(frame,src,0);
//rotate 90
transpose(frame,src);
imshow("video",src);
if(waitKey(20)>0)//按下任意键退出摄像头 因电脑环境而异,有的电脑可能会出现一闪而过的情况
break;
}
cap.release();
destroyAllWindows();//关闭所有窗口
return 0;
}
运行结果如下: