java opencv 调用摄像头_opencv C++实现调用摄像头动态识别人脸
前言
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
using namespace cv::face;
static Mat norm_0_255(Mat src) {
Mat dst;
switch (src.channels())
{
case 1:
normalize(src, dst, 0, 255, NORM_MINMAX, CV_8UC1);
break;
case 3:
normalize(src, dst, 0, 255, NORM_MINMAX, CV_8UC3);
default:
src.copyTo(dst);
break;
}
return dst;
}
static void read_csv(const string& filename, vector& images, vector& labels, char separator = ':') {
ifstream file(filename.c_str(), ifstream::in);
if (!file) {
string errorMessage = "没有提供有效的输入文件, 请检查给定的文件名";
CV_Error(Error::StsBadArg, errorMessage);
}
string line, path, classLabel;
while (getline(file, line)) {
stringstream liness(line);
getline(liness, path, separator);
getline(liness, classLabel);
if (!path.empty() && !classLabel.empty()) {
images.push_back(imread(path));
labels.push_back(atoi(classLabel.c_str()));
}
}
}
#if 1
static void detectHumenFrontFace(Mat& rgb, Mat& gray) {
//加载分类器
std::string cascadeFile = "D:/this.Libraries/opencv4.0.dev.64/etc/haarcascades/haarcascade_frontalface_default.xml";
auto cascade = std::make_shared(cascadeFile);
if (cascade->empty()) {
cerr << "文件读取失败..." << endl;
return;
}
std::vector<:rect> rects;
cascade->detectMultiScale(gray, rects);
rectangle(rgb,
Point(rects[0].x - 2, rects[0].y - 2),
Point(rects[0].x + rects[0].width, rects[0].y + rects[0].height),
Scalar(0, 255, 0));
}
int main(int argc, char* args[]) {
VideoCapture video;
video.open(0);
if (!video.isOpened()) {
cerr << "打开相机失败" << endl;
return 1;
}
while (true) {
Mat img;
video >> img;
Mat rgb;
cvtColor(img, rgb, COLOR_BGR2RGB);
Mat gray;
cvtColor(rgb, gray, COLOR_RGB2GRAY);
Mat graysmall2;
resize(gray, graysmall2, Size(gray.cols / 2, gray.rows / 2));
detectHumenFrontFace(rgb, gray);
imshow("image", rgb);
if (waitKey(10) == 'q')break;
}
return EXIT_SUCCESS;
}
#endif
效果图
IDE配置
java opencv 调用摄像头_opencv C++实现调用摄像头动态识别人脸相关推荐
- java opencv 物体检测_OpenCV.物体识别
1.度娘:"OpenCV 物体识别" ZC:主看这个,讲的比较细致,操作一般都是使用的 OpenCV里面的exe,一些代码是 java的 可以搞定,最后一段测试代码 是Python ...
- java opencv 相似度_opencv使用 java 对比两个人脸的相似度
1.创建Java工程,并导入如下jar包 opencv-440.jar 2.编写代码 import org.opencv.core.*; import org.opencv.imgcodecs.Img ...
- java opencv 模板匹配算法_OpenCV探索之路(九):模板匹配
模板匹配的作用在图像识别领域作用可大了.那什么是模板匹配? 模板匹配,就是在一幅图像中寻找另一幅模板图像最匹配(也就是最相似)的部分的技术. 说的有点抽象,下面给个例子说明就很明白了. 在上面这幅全明 ...
- java opencv 阀值分割_opencv 阈值分割的具体使用
阈值分割 像素图 原始图像像素图 见下面 红色线:标注一条阈值线 二进制阈值化 首先设定一条阀值线 如127 大于127的像素点灰度值设为最大(如unit8的格式为255) 小于127的像素点灰度值设 ...
- java opencv 提取车牌_opencv 学习之 车牌提取
车牌识别分两步,一是车牌提取,而是字符识别. 下面是车牌提取. VS2010. OpenCV249. //载入图像 char * path = "d:\\picture\\06.jpg&qu ...
- 调用摄像头使用face_recognition 或 opencv中haar人脸特征实时检测识别人脸、给人脸打马赛克/给人脸贴图
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) OpenCV:python调用摄像头同时使用OpenCV中自带 ...
- java opencv 实现换脸
最近碰到个项目,要求是实现人脸交换,即如下图所示,将右边汤唯的脸换成左边鹿晗的脸,变成中间的照片,就是人脸交换. 网上一般都是基于opencv和Dlib来实现,且多为c++或python语言,或app ...
- opencv之调用摄像头动态识别二维码
结合前几篇做的工作,实现一下动态识别二维码 opencv之调用摄像头动态识别二维码
- 【OpenCV入门】读取图片/视频/调用摄像头
我的个人博客:谋仁·Blog 微信公众号:谋仁的麻袋 读取图片 预期效果:从指定路径读取一张图片并显示出来. 源代码: #include <iostream>//输入输出流 #includ ...
最新文章
- 史上第二走心的 iOS11-Drag Drop 教程
- ios6:新特征介绍
- 漫谈 Weblogic CVE-2020-2555
- Tesseract-OCR 字符识别-样书训练
- 807. 保持城市天际线
- Java基础之字符如何截取?
- coolpad大神f2Android,酷派大神F2全高清版(8675-FHD Android 5.0)刷Recovery教程
- 什么是微信二次开发,如何进行微信二次开发?
- FPGA串口波特率计算方法
- Python轻松多条件计数与求和
- stm32晶振配置不一致导致 Invalid Rom Table 至芯片锁死解决方案
- word 分栏后转html,word文档分栏后的页码设置方法
- ViewData与ViewBag的区别是什么
- 腾讯TDSQL全时态数据库系统论文入选VLDB
- 【C++】RAll,裸指针,弃用auto_ptr原因
- 【你好,windows】Win10 x64 1709 X64企业G纯净版2019.7.28
- 小豹子带你看源码:ArrayList
- VIC水文模型在windows环境下运行
- 离散元 python_刚开始学习离散元软件Yade,有什么建议?
- Daily English Dictation Number Eight