我无法找到原始问题的答案,但我找到了另一种解决方案
这个问题可能会在其他地方被问到,但我一直在寻找几天,找不到任何有用的东西.
问题:我需要一次性将“Stream”转换为“image(bgr,byte)”,是否有一种方法/命令可以直接从System.Drawing.Image.FromStream转换为Emgu.CV.Image(Bgr,Byte)没有从流到图像转换到位图到图像(bgr,字节)?
信息:我在Visual Studio 2010中使用c#进行编码,这是我的论文项目的一部分.
我正在从网络上的IP摄像机拍摄图像流,并应用许多算法来检测面部/提取面部特征并识别个人面部.在我的笔记本电脑本地相机上我可以实现约25~(给或拿)的FPS,包括算法,因为我不需要转换图像.对于IP摄像机流,我需要多次转换才能达到所需的格式,结果大约为5-8fps.
(我知道我目前的方法是非常低效的,这就是为什么我在这里,我实际上是将图像总共转换5次(甚至是灰度缩放),实际上只使用了我处理器内存的一半(i7,8gb RAM)).它必须是图像(bgr,byte),因为这是算法将使用的唯一格式.
//headers using System.IO using System.Threading; using System.Net; //request a connection req = (HttpWebRequest)HttpWebRequest.Create(cameraUrl); //gives chance for timeout for errors to occur or loss of connection req.AllowWriteStreamBuffering = true; req.Timeout = 20000; //retrieve response (if successfull) res = req.GetResponse(); //image returned stream = res.GetResponseStream();
我在后台管理连接,数据,安全等方面有很多东西,我已经缩短到上面的代码.
我目前的代码将图像转换为所需的输出:
//Convert stream to image then to bitmap Bitmap bmpImage = new Bitmap(System.Drawing.Image.FromStream(stream)); //Convert to emgu image (desired goal) currentFrame = new Emgu.CV.Image<Bgr,Byte>(bmpImage); //gray scale for other uses gray = currentFrame.Convert<Gray,Byte>();
我知道有一种方法可以暂时在本地保存图像,但出于安全考虑,我需要避免这种情况.我正在寻找更多直接转换以帮助节省处理能力.
我忽略了什么吗?所有帮助表示赞赏.
谢谢阅读. (如果有人要求更多详细信息,我会更新此信息)
戴夫
解决方法
原文地址:https://www.jb51.cc/csharp/243510.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。