工业设计东莞网站建设,WordPress网络功能,国内做的比较好的数据网站,安徽省校园网站建设OpenCvSharp是OpenCv的包装器#xff0c;相当于底层是OpenCv只是用.Net的方式调用底层的接口的实现#xff0c;所以#xff0c;从OpenCv的知识架构来讲#xff0c;源码是一样一样的。就是换个语言写而已。1. OpenCvSharp 尽可能地以原生 OpenCV C/C API 风格为蓝本。2. Ope… OpenCvSharp是OpenCv的包装器相当于底层是OpenCv只是用.Net的方式调用底层的接口的实现所以从OpenCv的知识架构来讲源码是一样一样的。就是换个语言写而已。1. OpenCvSharp 尽可能地以原生 OpenCV C/C API 风格为蓝本。2. OpenCvSharp 的许多类都实现了 IDisposable。无需管理不安全的资源。3. OpenCvSharp 不会强迫您使用面向对象的编程风格。您还可以调用原生风格的 OpenCV 函数。4. OpenCvSharp 提供了从转换Mat为Bitmap(GDI) 或WriteableBitmap(WPF) 的函数。所以只要想学OpenCv那就可以以原OpenCv的代码方式用.NET 来进行实现。我早就想识别人脸最好能识别我是谁最好能把家里的小猫也识别了爽歪歪最近去了一趟水世界人家都是摄像头识别人脸只用提交一张自拍照就可以了而OpenCv肯定是能达到这种效果的当然我还在学习中先试试识别人脸的效果。我是台式机也没有摄像头突发奇想能不能连上我的手机安卓来实现摄像头的效果经过不断尝试终于达到了目的也算是有一个不错的效果。手机支持Web摄像头网上搜了很多资料最后找到了这个好用的视频工具 DroidCam 它分为两个端一个是手机端一个是PC端这样QQ就可以用PC端的驱动来实现PC的摄像头效果。但是主要是靠手机端因为有了手机端本身它就有了WebCamera的功能其中像海康这种网络摄像头都是有RTSP协议的也是可以用的。可以网上搜相关资源也可以下载我提供的资源我提供的是DroidCamX版本呦 支持720和1080清晰度呦安装后效果手机端是这个样子的直接运行起来就好还有一些相关的设置可以自行设置电脑端是这个样子的连上手机后效果还是很明显Web直接打开地址大概是: http://192.168.1.3:4747/video也可以通过 http://192.168.1.3:4747 打开我这里是乱码了但是可以点一下就可以通过Web的方式来实现对摄像头的相关设置。这样也就不用客户端了。OpenCvSharp 摄像头人脸识别主要是通过以下两个NugetInstall-Package OpenCvSharp4.Windows -Version 4.6.0.20220608
Install-Package OpenCvSharp4.Extensions -Version 4.6.0.20220608人脸识别模型库人脸识别模型库是从官网下载的地址如下:https://codeload.github.com/opencv/opencv/zip/refs/tags/4.6.0在这个目录下人脸识别相关业务逻辑static void Main(string[] args)
{Mat frame new Mat();var Capture new VideoCapture(http://192.168.1.3:4747/video?1280x720); // 这里是DroidCam手机端的IP地址和端口号 ?1280x720Console.WriteLine($摄像头是否打开:{Capture.IsOpened()});//声明窗口Cv2.NamedWindow(video, WindowFlags.KeepRatio);Cv2.ResizeWindow(video, 1280, 720);//加载人眼、人脸模型数据CascadeClassifier faceFinder new CascadeClassifier(haarcascades\haarcascade_frontalface_default.xml);CascadeClassifier eyeFinder new CascadeClassifier(haarcascades\haarcascade_eye_tree_eyeglasses.xml);var Count new ConcurrentDictionarylong, int();long PreviousTime 0;long FPS 0;while (true){bool res Capture.Read(frame);//会阻塞线程if (!res || frame.Empty()){continue;}var times GettimeStamp();if (PreviousTime ! times Count.ContainsKey(times - 1)){PreviousTime times;FPS Count[times - 1];Console.WriteLine($每秒处理图片:{FPS}帧);}Count.AddOrUpdate(times, 1, (k, v) v 1);Cv2.PutText(frame, ${FPS}, new Point(10, 70), HersheyFonts.HersheyPlain, 4, new Scalar(0, 0, 255), 3);//进行检测识别Rect[] faceRects faceFinder.DetectMultiScale(frame);Rect[] eyeRects eyeFinder.DetectMultiScale(frame);//如果有检测到就绘制结果到图像上if (faceRects.Length 0){Cv2.Rectangle(frame, faceRects[0], new Scalar(0, 0, 255), 3);}if (eyeRects.Length 1){Cv2.Rectangle(frame, eyeRects[0], new Scalar(255, 0, 0), 3);Cv2.Rectangle(frame, eyeRects[1], new Scalar(255, 0, 0), 3);}//显示结果Cv2.ImShow(video, frame);Cv2.WaitKey(1);//省略几个以加快图像的速度Capture.Grab();Capture.Grab();Capture.Grab();Capture.Grab();}Capture.Release();//销毁所有的窗口Cv2.DestroyAllWindows();Console.WriteLine(录制完毕!);Console.ReadLine();
}
public static long GettimeStamp()
{return new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
}运行结果哈哈算是露脸了我这脸可是有版权的呦总结效果还是很不错的终于算是入手OpenCv了后期的各种技巧和书籍就可以学起来了。最好以后可以通过一张图片就能识别到对方是谁这样的应用场景应该很多我之前公司的门禁都是统一拍照发照片搞定的。但是具体人脸咋搞一个数据出来还得继续搞搞。代码地址(包含了DroidCamX 相关工具)https://github.com/kesshei/CameraDemo.githttps://gitee.com/kesshei/CameraDemo.git阅一键三连呦感谢大佬的支持您的支持就是我的动力!