OpenCV视频检测代码(抄了很多代码,改了很多,算是自己的东西吧)
来源:互联网 发布:linux mint wine qq 编辑:程序博客网 时间:2024/04/25 02:24
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <fstream>
#include <opencv2/opencv.hpp>
#define CV_VERSION_ID CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION) CVAUX_STR(CV_SUBMINOR_VERSION)
#ifdef _DEBUG
#define cvLIB(name) "opencv_" name CV_VERSION_ID "d"
#else
#define cvLIB(name) "opencv_" name CV_VERSION_ID
#endif
//#pragma comment( lib, cvLIB("core") )
//#pragma comment( lib, cvLIB("imgproc") )
//#pragma comment( lib, cvLIB("highgui") )
//#pragma comment( lib, cvLIB("flann") )
//#pragma comment( lib, cvLIB("features2d") )
//#pragma comment( lib, cvLIB("calib3d") )
//#pragma comment( lib, cvLIB("gpu") )
//#pragma comment( lib, cvLIB("legacy") )
//#pragma comment( lib, cvLIB("ml") )
//#pragma comment( lib, cvLIB("objdetect") )
//#pragma comment( lib, cvLIB("ts") )
//#pragma comment( lib, cvLIB("video") )
//#pragma comment( lib, cvLIB("contrib") )
//#pragma comment( lib, cvLIB("nonfree") )
using namespace cv;
using namespace std;
//以上为网上找的opencv万能文件头
int main()
{
CascadeClassifier faceCascade;
faceCascade.load("C:\\opencv\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt2.xml"); //加载分类器,注意文件路径 (自己找找你的opencv解压路径下的文件)
vector<Rect> faces;//容器
VideoCapture cap(0); // 打开摄像头0
if (!cap.isOpened()) // 异常处理
{
cout << "Cannot open the video cam" << endl;
waitKey(60000);
return -1;
}
double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); //输入流的宽
double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); //输入流的高
cout << "Frame size : " << dWidth << " x " << dHeight << endl;
namedWindow("MyVideo", CV_WINDOW_AUTOSIZE); //创建一个窗体
/*string text = "LZ";
Point pt(100, 100);
Scalar color = CV_RGB(0, 255, 255);*/
while (1)
{
Mat frame;
Mat imgGray;
bool bSuccess = cap.read(frame); // 获取一帧
if (!bSuccess) //异常处理
{
cout << "Cannot read a frame from video stream" << endl;
break;
}
if (frame.channels() == 3)
{
cvtColor(frame, imgGray, CV_RGB2GRAY);//转为灰度图
}
else
{
imgGray = frame;
}
faceCascade.detectMultiScale(imgGray, faces, 1.2, 6, 0, Size(0, 0)); //检测人脸
if (faces.size() > 0)
{
for (int i = 0; i < faces.size(); i++)
{
rectangle(frame, Point(faces[i].x, faces[i].y), Point(faces[i].x + faces[i].width, faces[i].y + faces[i].height),
Scalar(0, 255, 255), 1, 8); //框出人脸位置 faces[i].x,faces[i].y, faces[i].x + faces[i].width, faces[i].y + faces[i].height
}
}
///*RNG rng(12345);
//Scalar value(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
//copyMakeBorder(frame, frame, 100, 200, 100, 200, BORDER_CONSTANT, value);*/
//rectangle(frame, Rect(10, 10, 200, 200), Scalar(0, 0, 255), 1, 1, 0);
//putText(frame, text, pt, CV_FONT_HERSHEY_DUPLEX, 1.0f, color);
imshow("MyVideo", frame); //显示获取到的视频帧
if (waitKey(30) == 27) //按Esc键退出
{
cout << "esc key is pressed by user" << endl;
break;
}
}
waitKey();
return 0;
#include <tchar.h>
#include <iostream>
#include <fstream>
#include <opencv2/opencv.hpp>
#define CV_VERSION_ID CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION) CVAUX_STR(CV_SUBMINOR_VERSION)
#ifdef _DEBUG
#define cvLIB(name) "opencv_" name CV_VERSION_ID "d"
#else
#define cvLIB(name) "opencv_" name CV_VERSION_ID
#endif
//#pragma comment( lib, cvLIB("core") )
//#pragma comment( lib, cvLIB("imgproc") )
//#pragma comment( lib, cvLIB("highgui") )
//#pragma comment( lib, cvLIB("flann") )
//#pragma comment( lib, cvLIB("features2d") )
//#pragma comment( lib, cvLIB("calib3d") )
//#pragma comment( lib, cvLIB("gpu") )
//#pragma comment( lib, cvLIB("legacy") )
//#pragma comment( lib, cvLIB("ml") )
//#pragma comment( lib, cvLIB("objdetect") )
//#pragma comment( lib, cvLIB("ts") )
//#pragma comment( lib, cvLIB("video") )
//#pragma comment( lib, cvLIB("contrib") )
//#pragma comment( lib, cvLIB("nonfree") )
using namespace cv;
using namespace std;
//以上为网上找的opencv万能文件头
int main()
{
CascadeClassifier faceCascade;
faceCascade.load("C:\\opencv\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt2.xml"); //加载分类器,注意文件路径 (自己找找你的opencv解压路径下的文件)
vector<Rect> faces;//容器
VideoCapture cap(0); // 打开摄像头0
if (!cap.isOpened()) // 异常处理
{
cout << "Cannot open the video cam" << endl;
waitKey(60000);
return -1;
}
double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); //输入流的宽
double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); //输入流的高
cout << "Frame size : " << dWidth << " x " << dHeight << endl;
namedWindow("MyVideo", CV_WINDOW_AUTOSIZE); //创建一个窗体
/*string text = "LZ";
Point pt(100, 100);
Scalar color = CV_RGB(0, 255, 255);*/
while (1)
{
Mat frame;
Mat imgGray;
bool bSuccess = cap.read(frame); // 获取一帧
if (!bSuccess) //异常处理
{
cout << "Cannot read a frame from video stream" << endl;
break;
}
if (frame.channels() == 3)
{
cvtColor(frame, imgGray, CV_RGB2GRAY);//转为灰度图
}
else
{
imgGray = frame;
}
faceCascade.detectMultiScale(imgGray, faces, 1.2, 6, 0, Size(0, 0)); //检测人脸
if (faces.size() > 0)
{
for (int i = 0; i < faces.size(); i++)
{
rectangle(frame, Point(faces[i].x, faces[i].y), Point(faces[i].x + faces[i].width, faces[i].y + faces[i].height),
Scalar(0, 255, 255), 1, 8); //框出人脸位置 faces[i].x,faces[i].y, faces[i].x + faces[i].width, faces[i].y + faces[i].height
}
}
///*RNG rng(12345);
//Scalar value(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
//copyMakeBorder(frame, frame, 100, 200, 100, 200, BORDER_CONSTANT, value);*/
//rectangle(frame, Rect(10, 10, 200, 200), Scalar(0, 0, 255), 1, 1, 0);
//putText(frame, text, pt, CV_FONT_HERSHEY_DUPLEX, 1.0f, color);
imshow("MyVideo", frame); //显示获取到的视频帧
if (waitKey(30) == 27) //按Esc键退出
{
cout << "esc key is pressed by user" << endl;
break;
}
}
waitKey();
return 0;
}
//注意安装环境及opencv的配置问题,
//debug下提示像是内存问题,请直接r版运行。
阅读全文
0 0
- OpenCV视频检测代码(抄了很多代码,改了很多,算是自己的东西吧)
- 好久不写代码,网上抄了几段代码改了一下实现自己的追书功能
- 我学了很多的东西
- 清理了很多不必要存在的东西
- 物体检测及分类方法总结(提供了很多论文和代码链接)
- 今天学了很多东西......................
- 怒删了很多东西
- GridView新绑定代码,简化了很多
- 不写代码已经很多年了
- 今天去面试,才发现自己忽略了很多东西
- 一段extjs代码,包含了很多js的知识
- PHP备份还原数据库类(根据网上抄来的代码小改了一下)
- CSDN改版了,改了很多
- 第五周编程题-分解质因数(看了很多别人的代码)
- 第五周编程题-完数(看了很多别人的代码)
- 第六周编程题-鞍点(看了很多别人的代码,3分/5分)
- 第七周编程题-GPS数据处理(看了很多别人的代码,0分)
- 第八周编程题-字数统计(期末,看了很多别人的代码,0分)
- vue数组中数据变化但是视图没有更新解决方案
- dubbo-zookeeper(续)
- 运算放大器工作原理
- oracle 表约束的添加、修改以及约束的禁用启用
- HPU2017-2016级暑期集训练习赛 【题解】
- OpenCV视频检测代码(抄了很多代码,改了很多,算是自己的东西吧)
- Hadoop学习路线图
- pycharm
- mesos是什么
- Linux 挂载命令
- LeetCode
- 棋盘问题 --搜索
- POJ
- Apache 开启Gzip压缩——可压缩js、css等静态文件