java - OpenCV 如何检测网络摄像头并比较本地文件以匹配人脸

标签 java c++ c opencv

突出显示的代码演示了 openCV 框架已加载到我的 C 代码中,它呈现了 Police watching。这只是为了证明它可以非常流畅地编写代码。

目标: 我的网络摄像头已连接到 USB 端口。我想捕获实时网络摄像头图像并从本地文件 (/tmp/myface.png) 匹配,如果实时网络摄像头与本地文件 myface.png 匹配,它将显示文本“Police watching”

我要解决的问题: 1) 我现在如何使用以下代码捕获我的网络摄像头? 2) 当 webCAM 被捕获时,我如何加载文件并查找它是否匹配,匹配时它只显示文本。

#include "cv.h"
#include "highgui.h"

int main() 
{
    CvPoint pt   = cvPoint( 620/4, 440/2 ); // width, height
    IplImage* hw = cvCreateImage(cvSize(620, 440), 8,3);  // width, height             
    CvFont font; // cvSet(hw,cvScalar(0,0,0)); // optional
    cvInitFont (&font, CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0, 0, 1, CV_AA);
    cvPutText  (hw, "Police watching", pt, &font, CV_RGB(150, 0, 150));        
    cvShowImage("Police watching", hw);     //cvNamedWindow("Police watching", 0); // optional
    cvWaitKey  (0);
}

注意:当这个模型可以工作时,我会练习这个以转换成 JNI Java 模型。

最佳答案

捕获视频帧很简单 follow this example .重要的部分是:

IplImage *img = cvLoadImage( argv[1], CV_LOAD_IMAGE_COLOR );
CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY );
while ( 1 ) {
    IplImage* frame = cvQueryFrame( capture );
    //match(img,frame);
}
cvReleaseCapture( &capture );

第二部分可能更难,具体取决于您要做什么。如果你想简单地比较图像,你可以使用 cvNorm .如果你想要face detection或人脸识别,你真的需要知道你在做什么。

关于java - OpenCV 如何检测网络摄像头并比较本地文件以匹配人脸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080267/

相关文章:

c++ - 您如何使用 boost/beast 从 HTTP POST 请求中解析和提取有效负载?

C 中的 Collat​​z 算法

c - 将 for 循环中的值存储到数组中?

java - 如何将属性文件中一个属性的值替换为另一个属性的值?

java - Spring Boot Freemarker 从 2.2.0 升级失败

java - 如果事务回滚,CompassGps 会回滚吗?

c++ - std::unique 类对象

c++ - 如何编写一个程序来打印特定碱基的前 N ​​个数字?

c - IP DSCP = 8 使IP总长度为7位数字

java - 在 Java 中处理多个 TCP 连接(服务器端)