如何在EMGUCV 3.1上对我的相机进行屏幕截图?
我在Emgu CV上执行非常简单的程序,因此我需要对相机录制的内容进行屏幕截图,并将其保存在特定的文件夹中,以下是我的相机捕获代码: ImageViewer viewer = new ImageViewer(); VideoCapture capture = new VideoCapture(); Application.Idle += new EventHandler(delegate (object sender, EventArgs e) { viewer.Image = capture.QueryFrame(); }); viewer.ShowDialog(); 我为简单的条款表示歉意,我仍然在编程中确实菜鸟. 解决方案 似乎您刚刚发布了EMGUCV Wiki的标准代码.但是,让我尝试解释如何在计算机上显示网络摄像头的视频供稿并在按下按钮时
8 2024-04-25
编程技术问答社区
将图像上传到微软认知服务?
我正在尝试将图像发布到他们还提到我可以将图像发布为原始二进制文件,但我无法获得如何开始. ps:如果您想在其他情况下对其进行测试,可以使用免费订阅获取订阅密钥. 解决方案 localhost是127.0.0.1,例如从PC访问PC时.您应该在Internet中传递PC的外部IP 其他解决方案 我能够得到解决方案.没有发布我的答案对不起. 在答:这显示了如何使用nuget Microsoft.projectoxford.vision. using Microsoft.ProjectOxford.Vision; using Microsoft.ProjectOxford.Vision.Contract; private async Task UploadAndAnalyzeImage(string imageFilePath) { // // Create Project Oxford Computer Visi
8 2024-04-25
编程技术问答社区
你如何重新扭曲一个点?
我有一个扭曲的图像,我在上使用Cv2.Undistort()将其拉直.之后,我发现图像中的一些要点.我需要在扭曲的图像中获取这些点的位置. 我尝试过Cv2.ProjectPoints(),但未能获得适当的坐标.它们在图像的边界之外. 这就是我这样做的方式: List arr = new List(); foreach (var i in points) { arr.Add(i.X); arr.Add(i.Y); arr.Add(0); } Mat pointArr = new Mat(3, points.Count, MatType.CV_32FC1, arr.ToArray()); float[] rotArr = { 1, 0, 0, 0, 1, 0, 0, 0, 1}; float[] transArr = { 0, 0, 0 }
0 2024-04-24
编程技术问答社区
比较两幅图像的焦点
我正在尝试开发对象检测算法.我计划比较不同焦点长度的2个图像.一个正确关注对象的图像和一个正确关注背景的图像. 阅读有关 autofocus algorithm .我认为可以使用对比检测被动自动对焦算法来完成.它在传感器上的光强度上起作用. ,但我不确定图像文件的光强度值与传感器相同的值. (这不是原始图像文件.jpeg图像.)JPEG图像中的光强度值与传感器上的光强度相同吗?我可以使用它来检测焦点正确性与对比检测?是否有更好的方法来检测哪个图像区域是正确关注图像的? 解决方案 我试图对图像进行一些处理,并看到了一些进展.这就是我使用openCV所做的: 使用cvtcolor(i,mgrey,cv_rgb2gray)将图像转换为灰色; 唐采采样/使它们有些削减,因为它们很大(几个MB) 使用 您可能可以尝试使用抓取切割并插入颜色图像.如果您不熟悉抢次的削减,请把我回答我的答案问题. ,但可能是一种更简单的方法也将在这里起作用.您可以尝试应用强
2 2024-04-22
编程技术问答社区
如何侦测Blobs并将其裁剪成png文件?
我一直在研究WebApp.我陷入了一个有问题的问题. 我将尝试解释我要做什么. 在这里,您会看到第一个大图像,其中有绿色的形状. 我想做的是将这些形状裁剪成不同的png文件,并像大于大图下的示例裁剪图像一样使其背景透明. 第一个图像将由用户上传,我想裁剪成示例上面的裁剪图像,可以使用PHP的GD库或用Python或C#编写的服务器端软件来完成.但是我不知道这个操作叫什么,所以我不知道Google要找到信息.这与计算机视觉检测到斑点并将其裁剪成碎片有关. 任何关键字,链接都会有所帮助. 感谢您的帮助 解决方案 OPENCV提供了一个名为在图像中找到连接的组件.如果始终是绿色与白色,则需要红色通道(在白色区域将是白色的,在绿色区域中是白色的)(因为您想提取 dark 区域),然后使用 cv :: findContours 以检测斑点.然后,您可以使用 bendnofollow"> bendnoflowl"> bending cv ::创建一个大小的新图像,并使用您获得的轮
6 2024-04-21
编程技术问答社区
关于C#的边缘检测
我有这样的黑白图像(颜色叠加是我的,可以去除): 我需要弄清楚显示的手的边缘,我该怎么做? 我当前的算法: List edgePoints = new List(); for (int x = 0; x
2 2024-04-21
编程技术问答社区
Hough变换问题
我在C#中实现了hough变换: List forme = new List(); forme.Add(new Point(260, 307)); forme.Add(new Point(268, 302)); forme.Add(new Point(273, 299)); forme.Add(new Point(279, 295)); forme.Add(new Point(285, 292)); forme.Add(new Point(291, 288)); forme.Add(new Point(298, 283)); forme.Add(new Point(305, 280)); forme.Add(new Point(312, 277)); forme.Add(new
12 2024-04-20
编程技术问答社区
Hough变换问题
我在C#中实现了hough变换: List forme = new List(); forme.Add(new Point(260, 307)); forme.Add(new Point(268, 302)); forme.Add(new Point(273, 299)); forme.Add(new Point(279, 295)); forme.Add(new Point(285, 292)); forme.Add(new Point(291, 288)); forme.Add(new Point(298, 283)); forme.Add(new Point(305, 280)); forme.Add(new Point(312, 277)); forme.Add(new
2 2024-04-20
编程技术问答社区
如何测量立体图像中的距离?
我有两个图像(左右) 我想测量图像上的真实距离吗? 当我单击图像时,ıLl获取真正的距离以单击相机. 左图: 正确的图像: 我已经校准了这两个图像.我想使用emgucv与图像距离. 这是可能的吗? 解决方案 虽然我不知道EMGUCV的细节,但我可以告诉您立体声深度感知的工作方式背后的概念,希望您可以实现某种修复. 本质上,第一步是分割和匹配图像的一部分.您在这里要完成的工作是确定每个图像中"相同"的各个部分.例如,您希望能够识别每个图像中灯的中心.您用来执行此操作的功能集取决于您,但是可能有帮助的一个基本功能是使用边缘检测器(例如Canny方法)并尝试匹配具有相似形状的轮廓.此外,另一种常见的技术是将图像分解为较小的块和这些块中的匹配功能.您使用的方法取决于您. 接下来,您可以在这两个图像中计算匹配对象与相机中心的距离.您需要在x和y方向上执行此操作.我们将其称为您的X和Y差异. 现在,您需要知道拍摄照片的相机中心之间的距离.一旦有了这个
0 2024-04-20
编程技术问答社区
扫描图像以寻找矩形
我正在尝试扫描恒定尺寸的图像,并在其中找到绘制的矩形. 矩形可以有任何大小,但只有红色. 这是不是问题开始的地方. 我将使用已经写的功能,我将在我的代码逻辑上使用伪代码来使用它. Rectangle Locate(Rectangle scanArea); //扫描给定扫描区域中的矩形. 如果找不到直接,请返回null. 我的逻辑就是这样: 使用Locate()函数以完整的图像大小作为参数找到第一个初始红色矩形. 现在,将其余区域划分,并递归进行扫描. 该算法的逻辑中的要点是,您永远不会检查已检查的区域,并且不必使用任何条件,因为始终scanArea参数是您以前从未扫描的新区域(这要感谢分区技术). 分区过程是这样完成的:当前发现的矩形,底部区域和左侧区域的正确区域. 这是一个说明该过程的图像. (白色虚线矩形和黄色箭头不是图像的一部分,我仅添加它们是为了插图.) 如您所见,一旦找到一个红色的矩形,我就会不断扫描其右侧,底部和左侧.递归. 所以这是
6 2024-04-18
编程技术问答社区
是否有任何代码或算法用于签名识别?
我的用户使用触摸事件在我的应用程序中绘制他们的签名,然后将其转换为位图.我想提取每个签名的独特规格,并通过存储在主服务器中的规格进行比较. 我该怎么做? 什么是提取签名独特功能的主要和企业算法? 预先感谢 解决方案 我不是计算机视觉专家,但是作为涉足的研究生,听起来像是您想要的功能.想到的第一件事是筛分(比例不变特征变换).该算法将允许您比较原始签名的存储特征以复制并确定具有高度准确性的匹配,即使在样本缩放或旋转的情况下也是如此. 使用简单的Google搜索,您可以找到许多学术论文,例如这个或这个与使用算法/生物识别算法特别相关. 有一个讨论在此堆叠溢出文章. 如果我不知道有更好的视力算法,这特别适合这个问题,我鼓励社区加入. 其他解决方案 尝试查看此资源使用神经网络来进行手写识别.尝试查看也显示了此资源识别手写数字.这两个项目都有完整的源代码. 其他解决方案 问一个类似的问题: bitmap(of签名)在C# 中进行比较
2 2024-04-18
编程技术问答社区
Kinect: 我如何识别第一个跟踪的骨架,并在之后做一些事情?
我如何将第一个骨架iD kinect跟踪,然后用它做事.我只对第一个骨骼感兴趣,而我不需要它们之后的骨骼.最好是根本没有跟踪下一个骨架. 有人可以帮助我.当前,下面使用的代码不起作用.我尝试了一些快速的LINQ查询,但我不太确定如何使用它.总是有错误. 有人可以给我一些我可以提前感谢的例子!! private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { Skeleton[] skeletons = new Skeleton[0]; using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame()) { if (skeletonFrame != null) {
0 2024-04-17
编程技术问答社区
通过OpenCV的凸轮移位算法控制鼠标指针(或鼠标的基本功能)。
我使用EMGUCV(OPENCV的包装器)在C#中编写了一个程序.该程序使用凸轮班算法跟踪对象.围绕对象绘制矩形.光标由矩形中心移动.输入取自网络摄像头. 最初的问题是光标无法覆盖整个屏幕.它的运动仅限于框架尺寸.因此,我应用了一个乘法因子: 屏幕宽度/框架宽度沿x方向运动. screenheight/fraxheight in y方向运动 使用此鼠标覆盖了整个区域.但是鼠标运动不再平滑.我无法指向两个图标.在覆盖整个屏幕时,如何使鼠标移动平稳,就像真正的鼠标发生的那样? 解决方案 指出明显的:鼠标实现的非平滑度来自以下事实:CamShift给出的矩形仅适用于一个帧像素的准确性,因此可能的最小运动将是将屏幕化/框架舍入到最近的屏幕像素上. 如果是这种情况,可以应用某种指针加速度,就像使用实际的低质量小鼠时(当然,如果有多个千dpi激光小鼠,则无需这样的事情).基本上,光标在屏幕上移动的距离不是指针输入所采取的距离(在这种情况下为凸轮矩形矩形位移),而
0 2024-04-17
编程技术问答社区
验证图像序列
问题 问题塑造 图像序列位置和大小是固定的,并且事先已知(不是缩放).它将很短,最多为20帧,并在闭环中.我想验证(通过按钮点击驱动的事件),我以前已经看过. 可以说我有一些图像序列,例如: 如果看到的话,我想查看与之关联的ID,如果没有,它将被分析并添加为图像序列的新实例.尽管我有一段时间,但我承认,这可能是一个困难的问题.我似乎很难将所有这些放在一起,有人可以在C#中提供帮助吗? 限制和使用 我是不是试图重新创建版权检测系统,例如内容ID系统YouTube已实施(Margaret Gould Stewart在Ted( link )).图像序列可以像(.gif)文件一样思考,但是不是,没有直接的方法来获取二进制文件.可以使用类似的方法,以避免在"图像共享数据库"中重复,但这不是我要做的. 我的努力 高斯模糊 Mathematica函数生成高斯模糊内核: getKernel[L_] := Transpose[{L}].{L}/(
0 2024-04-15
编程技术问答社区
图像分割-分割与合并(四叉树)。
是否有针对图像分割的拆分和合并方法的实现? 任何建议都将不胜感激. 解决方案 什么分割是关于? 分割意味着将图像分为几个连接的区域.基本上,您可以对区域的两个定义进行分割:您可以将区域定义为一组连接的类似像素,或一组被不连续性(边缘)包围的连接像素.拆分和合并使用第一种方法. 数学上讲:如果您的整个图像由一组像素(称为R)表示,那么您要获得的子集(例如 ) 分割已完成,因此所有子区域总和到所有区域的整个R. is r 1 u r 2 u ... u r n = r. r i 已连接. 区域是不同的. r i ∩r j =∅i,给定I≠j 区域具有相似的属性.这可以通过称为同质标准(P)的函数表示.它应该为给定地区的成员提供真实,并为所有其他地区的错误. 无法合并邻居地区.对于所有区域,p(r i u r j )= false I≠j. 什么分裂和合并算法是关于的? 因此,首先,我们必须选择一个匀浆标准.同质性标准可能是全球性的(取决于整个区域)
24 2024-04-15
编程技术问答社区
在C#中使用Emgu.CV的System.TypeInitializationException
在这一点上,我有一个函数,该函数需要从我的相机接口中获取图像.然后将此图像保存到硬盘驱动器中,并显示在Windows表单GUI中. 返回图像的摄像机界面中的功能如下: 高度和宽度都是摄像机接口类的一部分的整数.在这种情况下,它们设置为800x600. public Image QueryFrame() { Image temp; lock (key) { using (Capture cap = new Capture()) { cap.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT, height); cap.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH,
2 2024-04-14
编程技术问答社区
图像聚焦计算
我正在尝试为某些测试自动化工作开发焦点算法的图像.我选择使用aforge.net,因为它似乎是一个不错的成熟.net友好系统. 不幸的是,我似乎找不到有关从头开始构建自动对焦算法的信息,所以我给了我最好的尝试: 拍摄图像.应用Sobel边缘检测过滤器,该滤波器生成灰度边缘轮廓.生成直方图并保存标准开发.将摄像机移到一个接近主题的一步中,然后拍摄另一张照片.如果标准开发人员小于以前的开发人员,那么我们将获得更多的焦点.否则,我们已经超越了拍照的最佳距离. 有更好的方法吗? 更新:顺便说一句,这很大.当我获得过去的最佳焦点点时,我的"焦点图像"值继续增长.您会期望抛物线功能从距离/焦点值来看,但实际上您会得到更对数 的东西 更新2:好的,所以我回到了这个,我们探索的当前方法得到了一些已知的边缘(好吧,我确切地知道图片中的对象是什么),我做了一个手动像素强度比较.随着结果图变得越来越陡峭,我会更加焦点.核心算法从MATLAB移植到C#(是的,Matlab ..:S)
2 2024-04-12
编程技术问答社区
什么是好的车牌检测算法?
背景 对于我在大学的最后一个项目,我正在开发车牌检测申请.我认为自己是中级程序员,但是我的数学知识缺乏中学上的任何东西,这使得制造正确的配方比应该更难. 我花了很多时间查找学术论文,例如: 检测图像中的车辆牌照 当涉及数学时,我迷路了.由于该测试,各种图形图像被证明是有效的,例如: to 但是,这种方法仅适用于该特定图像,如果将技术应用于不同的图像,我敢肯定会发生较差的转换.我已经阅读了一个称为"底帽形态变换"的公式,该公式执行以下操作: 基本上,转移保留了图片的所有黑暗细节,并消除了其他所有内容(包括更大的黑暗区域和光区). 我找不到有关此信息的太多信息,但是报告末尾的文档中的图像显示了其有效性. 其他约束 在C# 中开发 将项目仅限于英国注册板 我可以选择要转换为演示的图像 问题 我需要有关我应该专注于开发哪种转型技术以及哪些算法可以帮助我的建议. 编辑:续 - 续 - 车辆车牌检测 解决方案
10 2024-04-11
编程技术问答社区
你能用cvCalibrateCamera2来找到两台摄像机的外在关系吗?
我想知道使用cvCalibrateCamera2找到2个相机之间的旋转和翻译的可能性. 以刚刚完成棋盘校准的场景为例,在该场景中,棋盘可在两个图像平面上都可以看到.如果我然后从一个摄像机和另一个相机的点传递到这些点,因为image_points这会给我两个视图之间的旋转和翻译吗? 另外,这吐出了几个旋转矩阵和翻译向量.我会使用哪一个? 解决方案 我认为 其他解决方案 可能最好使用FindExtrinsicCameraParams2
4 2024-04-10
编程技术问答社区
如何在Gstreamer插件链函数中解析GstBuffer和Mat之间的图像
我正在尝试根据其模板来实现GSTREAMER插件_CHAIN函数,该函数只需将输入视频框架(BGRX)替换为相同大小的转换图像,如下所示: static GstFlowReturn gst_myplugin_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) { Gstmyplugin *filter; filter = GST_MYPLUGIN (parent); if(filter->silent == FALSE) g_print("I'm plugged, therefore I'm in. \n"); // retrieve pass-in image frame from input buf GstMapInfo map; gst_buffer_map(buf, &map, GST_MAP_READ); cv::Mat frame(cv::Size(width, hei
14 2024-04-09
编程技术问答社区