我想从这种图片中捕捉数字.
我尝试从以下链接进行多尺度匹配.
http://www.pyimagesearch.com/2015/01/26/multi-scale-template-matching-using-python-opencv/
我想知道的只是红色数字.但问题是,openCV识别/匹配模板的红色数字模糊.是否有其他可能的方法来检测黑色背景上的这个红色数字?
我参与了一个个人项目,需要相当广泛的边缘检测和图像分割/对象识别知识.
在编写代码之前,我知道规划/理解的重要性,考虑到这一点,开始学习这些计算领域的最佳位置是什么?我理想地寻找在线文章/论文.
谢谢
我是生物学显着区域探测器概念的新手,我读了一些论文,他们总是使用Center-Surrond计算机特征强度,颜色和方向的机制.我GOOGLE了这一机制,但我没有发现通过实施它Opencv与JavaAPI或以任何其他库.
实际上我想创建显着图,并且据我所研究,强度,颜色,方向等一些特征将由中心环绕机制/滤波器计算.
我阅读了很多o出版物和最好的出版物,只是提供了伪代码,但仍然缺乏清晰度.我的意思是,如果你有一个关于详细问题的问题,以了解该过滤器是如何工作的,那么伪代码将无济于事.
中心环绕滤波器机制是Opencv在任何其他库中实现的吗?
请使用和伪代码提供说明.
opencv image-recognition pattern-matching edge-detection feature-detection
主要思想是允许用户重新着色到基于特定墙的用户选择.目前我已经使用cvFloodFill(帮助准备掩模图像)实现了这个功能,这可以帮助我改变HSV墙的相对值,这样我就可以保留边缘.但是这个解决方案的问题在于它适用于颜色,并且所有墙壁都被重新绘制,而不是由用户选择的单个墙壁.
我也尝试过canny边缘检测,但它只能检测边缘但不能将其转换为区域.
请在下面找到我目前用于重绘功能的代码
准备面具
cvFloodFill(mask, new CvPoint(295, 75), new CvScalar(255, 255, 255,0), cvScalarAll(1), cvScalarAll(1), null, 4, null);
分道
cvSplit(hsvImage, hChannel, sChannel, vChannel, null);
换颜色
cvAddS(vChannel, new CvScalar(255*(0.76-0.40),0,0,0), vChannel, mask);
我们如何从图像中检测边缘和相应区域.
我正在寻找解决方案,除了opencviPhone和Android 之外,应该是可能的

编辑
我可以使用以下步骤在下面的图像中获得一些结果
cvCvtColor(image, gray, CV_BGR2GRAY);
cvSmooth(gray,smooth,CV_GAUSSIAN,7,7,0,0);
cvCanny(smooth, canny, 10, 250, 5);
Run Code Online (Sandbox Code Playgroud)
这个输出有两个问题,不知道如何解决它们1.靠近边缘近距离2.去除小边缘

我在Android平台上使用openCV.在这个社区和技术人员的大力帮助下,我能够成功地从图像中检测到一张纸.这些是我使用的步骤.
1.Imgproc.cvtColor()
2.Imgproc.Canny()
3.Imgproc.GausianBlur()
4.Imgproc.findContours()
5.Imgproc.approxPolyDP()
6.findLargestRectangle()
7.find the vertices of the rectangle
8.find the vertices of the rectangle top-left anticlockwise order using center of mass approach
9.find the height and width of the rectangle just to maintain the aspect ratio and do warpPerspective transformation.
Run Code Online (Sandbox Code Playgroud)
应用了所有这些步骤后,我可以轻松地从图像中获取文档或最大的矩形,但这在很大程度上取决于背景和文档表的强度差异.由于Canny边缘的工作原理是强度梯度,不同之处在于强度总是从实现方面假设.这就是为什么Canny将各种阈值参数考虑在内.
因此,如果像素的强度梯度大于高阈值,则它将被添加为输出图像中的边缘像素.如果像素的强度梯度值低于下阈值,则像素将被完全拒绝.如果是像素在较低和较高阈值之间具有强度,如果它连接到具有大于较高阈值的值的任何其他像素,则它将仅被添加为边缘像素.
我的主要目的是使用Canny边缘检测进行文档扫描,因此我想知道如何动态计算这些阈值,以便它可以处理暗背景和浅背景两种情况.
我通过手动调整参数尝试了很多,但我找不到与场景关联的关系.
希望我明确我的观点,并提前致谢
作为一个更大的程序(与渲染体积图形相关)的一部分,我有一个小而棘手的子问题,其中任意(但有限)三角形2D网格需要以特定方式进行标记.我刚刚写了一个解决方案(见下文),它对我当时的测试网格来说已经足够好了,尽管我意识到这种方法对于人们可以想到的每个可能的网格都可能不会很好.现在我终于遇到了一个网格,目前的解决方案根本不能很好地执行 - 看起来我应该想出一种完全不同的方法.不幸的是,我似乎无法重置我的思路,这就是为什么我以为我会问这里.
请看下面的图片.(颜色不是问题的一部分;我只是添加它们来改进(?)可视化.而且变化的边缘宽度是一个完全不相关的工件.)

对于每个三角形(例如,橙色ABC和绿色ABD),三个边缘中的每一个都需要被给予两个标签中的一个,例如"0"或"1".只有两个要求:
网格是真正的2D网格,它是有限的:即,它不包裹,并且它具有明确定义的外边界.显然,在边界上很容易满足要求 - 但内部变得更加困难.
直观地说,看起来至少应该存在一个解决方案,即使我无法证明它.(通常有几个 - 其中任何一个都足够了.)
我目前的解决方案是一个非常强力的解决方案(此处仅为完整性而提供 - 可以跳过此部分):
通常这种方法发现只是一对夫妇的迭代内的解决方案,但最近我遇到了该算法趋于结束后,才一两个网上千重试......这显然表明,有可能的网格,它永远不会结束.
现在,我希望有一个确定性的算法,保证总能找到解决方案.计算复杂性不是一个大问题,因为网格不是很大,并且标签基本上只需要在加载新网格时完成,这不会一直发生 - 所以一个算法(例如)指数复杂性应该没问题,只要它有效.(但当然:效率越高越好.)
感谢您阅读此内容.现在,任何帮助将不胜感激!
不幸的是,我无法让Dialecticus建议的方法起作用.也许我没弄错......无论如何,考虑以下网格,起点由绿点表示:
让我们放大一点......
现在,让我们开始算法.在第一步之后,标签看起来像这样(红色="星号路径",蓝色="环形路径"):
到现在为止还挺好.第二步之后:
第三个:
......第四名:
但是现在我们遇到了问题!让我们再做一轮 - 但请注意以洋红色绘制的三角形:
根据我目前的实现,洋红三角的所有边缘都在环形路径上,所以它们应该是蓝色的 - 这实际上是一个反例.现在也许我以某种方式弄错了......但无论如何,最接近起始节点的两条边显然不能是红色; 如果第三个标记为红色,那么似乎解决方案不再符合这个想法.
顺便说一下,这是使用的数据.每行代表一条边,列的解释如下:
我以二维数组的形式表示图像.我有这张照片:

如何获得直接位于灰色区域边界上的像素并将其着色?

我想分别用绿色和红色得到矩阵元素的坐标.矩阵上只有白色,黑色和灰色区域.
前几天我正在参与线程图像/图形到一个形状,并通过Rectangle迭代添加到图像来做一个黑客尝试获取图像的轮廓Area.那很慢.
这个例子改为构建一个GeneralPath并Area从GP 创建.快多了.

左上角的图像是"源图像".右边的两个是处理轮廓的各个阶段.它们都有圆形边缘和三角形倾斜边缘的锯齿状边缘.
我希望获得一种能够消除或减少锯齿状的形状.
1234
1 **
2 **
3 ***
4 ***
5 ****
6 ****
Run Code Online (Sandbox Code Playgroud)
角落在:
1234
1 ****
2 ****
3 **
4 **
5 ****
6 ****
Run Code Online (Sandbox Code Playgroud)
角落在:
假设我们的路径具有显示的形状和列出的点,我想放下第一组的"内角"点,同时保留"内部角落的一对"(图像中的一对)第2位.
PathIterator并建立一个新的GeneralPath掉落奇异的内角 - 如果我能想出如何识别它们!).以下是要使用的代码:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
/* Gain …Run Code Online (Sandbox Code Playgroud) 我的任务是检测土壤表面的裂缝并计算裂缝的总面积。为此,我使用了Canny边缘检测。
输入图像

结果
下一步是将Canny边缘转换为轮廓,因为我想cv2.mean使用cv2.contourArea功能过滤裂纹并使用函数计算其面积。在这一步上,我遇到了问题。当我使用时:
canny_cracks = cv2.Canny(gray, 100, 200)
contours, _ = cv2.findContours(canny_cracks, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
Run Code Online (Sandbox Code Playgroud)
由于边缘边缘的孔,它无法正确转换。在这里看到问题

我的问题是如何连接边缘的末端以封闭边缘之间的孔?
注意:我使用了轮廓检测而不应用Canny边缘。问题在于轮廓检测会产生很多噪声,并且不能很好地检测所有裂缝。或者,也许我不知道如何像精巧的边缘那样找到轮廓。
我正在使用OpenCV(Canny + findCountours)来查找对象的外部轮廓.绘制的曲线通常几乎(但不是完全)是闭合的.我想关闭它 - 找到它所包含的区域.
我该怎么做呢?
事情考虑: