- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为“harris_corner_detector”函数实现创建一个随机测试(非常普遍且略有不正确:一个在图像中查找角点的函数)在测试中,我想在二进制 numpy 矩阵中创建随机的简单形状(很容易知道它们角的坐标)(例如矩形、三角形、菱形(菱形)等...)并检查 harris 实现是否找到了正确的角落。
我已经实现了一个随机“绘制”轴平行矩形的函数,但是当涉及到不平行于轴的形状时,我找不到有效的方法。
为了创建一个随机矩形,我在两个轴上随机选择一个起点和一个终点,然后像这样更改这些边界内所有单元格的值:
获取随机坐标:
def _get_random_coords(self, start, end):
x_start, y_start = np.random.randint(start, end, 2)
x_end = np.random.randint(x_start + 7, end + 20)
y_end = np.random.randint(y_start + 7, end + 20)
return (x_start, x_end, y_start, y_end)
绘制随机矩形(背景值为 255,形状值为 0):
mat = np.ones((1024, 1024)) * 255
mat[x_start: x_end, y_start: y_end] = np.zeros((x_end - x_start, y_end - y_start))
但是当涉及到有效地绘制菱形时,我不知所措。我所能想到的就是运行一个像这样创建钻石的循环:
def _get_rhombus(self, size):
rhombus = []
for i in range(size):
rhombus.append(np.zeros(i+1))
for i in range(size - 1, 0, -1):
rhombus.append(np.zeros(i))
return np.array(rhombus)
然后另一个循环将其添加到更大的矩阵中。但是这种方法在测试时效率非常低(因为我会画数百个,其中一些可能很大)。
还有更好的想法吗?或者 - 是否有更好的方法来测试它?
提前致谢。
最佳答案
这里有很多问题,但主要问题是如何在给定角的情况下创建一个填充菱形的 numpy 数组。我会回答这个问题,并留下其他问题,例如创建随机菱形等。
要填充凸多边形,可以找到由后续角点指定的线并填充该线的上方或下方,然后和
所有填充区域一起。
import numpy as np
import matplotlib.pyplot as plt
# given two (non-vertical) points, A and B,
# fill above or below the line connecting them
def fill(A, B, fill_below=True, xs=10, ys=12):
# the equation for a line is y = m*x + b, so calculate
# m and b from the two points on the line
m = (B[1]-A[1])/(B[0]-A[0]) # m = (y2 - y1)/(x2 - x1) = slope
b = A[1] - m*A[0] # b = y1 - m*x1 = y intercept
# for each points of the grid, calculate whether it's above, below, or on
# the line. Since y = m*x + b, calculating m*x + b - y will give
# 0 when on the line, <0 when above, and >0 when below
Y, X = np.mgrid[0:ys, 0:xs]
L = m*X + b - Y
# select whether, >=0 is True, or, <=0 is True, to determine whether to
# fill above or below the line
op = np.greater_equal if fill_below else np.less_equal
return op(L, 0.0)
这是一个简单的低分辨率菱形
r = fill((0, 3), (3, 8), True) & \
fill((3, 8), (7, 4), True) & \
fill((7,4), (5,0), False) & \
fill((5,0), (0,3), False)
plt.imshow(r, cmap='Greys', interpolation='nearest', origin='lower')
即上图是将以下填充and-ing在一起的结果:
fig, ax = plt.subplots(1, 4, figsize=(10, 3))
fill_params = [((0, 3), (3, 8), True), ((3, 8), (7, 4), True), ((7, 4), (5, 0), False), ((5, 0), (0, 3), False)]
for p, ax in zip(fill_params, ax):
ax.imshow(fill(*p), cmap="Greys", interpolation='nearest', origin='lower')
或者,一个人可以做高分辨率,它可以有多个面(尽管我认为它必须是凸面的)。
r = fill((0, 300), (300, 800), True, 1000, 1200) & \
fill((300, 800), (600,700), True, 1000, 1200) & \
fill((600, 700), (700, 400), True, 1000, 1200) & \
fill((700,400), (500,0), False, 1000, 1200) & \
fill((500,0), (100,100), False, 1000, 1200) & \
fill((100, 100), (0,300), False, 1000, 1200)
plt.imshow(r, cmap='Greys', interpolation='nearest', origin='lower')
显然,有一些地方需要改进,比如不重复线的第二个点和新线的第一个点,但我想保持这一切干净和简单(而且,为了填充工作点只需要定义一条线而不需要是一个角,所以在某些情况下,这种更通用的方法可能更可取)。此外,目前需要指定是在线上方还是下方填充,可以通过多种方式计算,但在生成菱形时可能是最简单的。
关于python - 在 numpy 数组上“绘制”随机菱形(菱形)(测试哈里斯角检测),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65242200/
我尝试创建菱形 View 。我想在弹出窗口中使用它。有谁知道该怎么做? 感谢任何建议。 最佳答案 看看 PathShape : 看起来您只需将具有正确线条/填充的路径传递给它,然后将其绘制在弹出对话框
我正在努力弄清楚如何添加像此处图片那样的边框。菱形/方形旋转边框。我试过边框图片,但似乎无法加载它们。 这两个 border-image: url('path-to-your-png') 33
当我知道每个 Angular 的度数时,如何使用 css 创建四边形。 我已经尝试通过变换和倾斜重新创建一个四边形。 但是,这并不是很好。 这是我尝试存档的内容。 具体要求是: 以此为背景的一个 di
本人是一名python初学者,刚刚看到一道有趣的python问题,“用python如何在编译器中打印出菱形图案?” 因此决定尝试一下,代码不多,仅供参考。 代码
我是jointJS的新手,我需要使用JointJS创建自定义形状,我尝试使用矩形创建菱形,使其高度和宽度相同,然后旋转45度,如下所示, var diamond = new joint.shapes
我的程序打印出这样的钻石: ...............* ..........* * * .....* * * * * * * * *
我正在使用 SMFL/C++ 制作一个 2D 等距游戏引擎,我在进行等距计算时得到了这个: 这是我在 2D 引擎中计算等距坐标的公式:对于 I-J 坐标,我有: x = (I - J) * (tile
我正在尝试创建一个横跨页面的菱形样式链接菜单。我还会有一些 java 脚本下拉菜单。像这样的东西:\\\\ 我在 div 上使用倾斜 css3 属性,但它们也会倾斜文本,有没有办法取消倾斜 div 中
我想制作一个带有图像背景的菱形。我能做到,唯一的问题是图像似乎同时旋转,这是我不想要的。这也需要在ie8中工作 fiddle :http://jsfiddle.net/zangief007/2bft2
我正在抓取一些韩语文本,大部分字符显示了 99.9%,但其余字符如下所示。 �Z 例如,它应该抓取“고소를해줫어”,但在我的输出中它给了我“고소를해�Z어”。 我知道这是一个编码问题,我只是不知道如何
我正在尝试用 Java 编写一个程序,从用户那里捕获一个整数(假设数据有效),然后根据整数的大小输出一个菱形,即用户输入 5 ,输出将是: --*-- -*-*- *---* -*-*- --*--
我最近将数据库的内容从一台主机移到了另一台主机。在那之后我得到了奇怪的字符,比如两个菱形或菱形,里面有问号而不是瑞典字符 ä。 我之前在第一台主机上遇到过这个问题,然后我添加了这段代码,它工作正常 $
是否可以使用react-native创建菱形 View ? 这是我想要的图片: 我尝试使用边框样式,但无法实现。 最佳答案 我在这里得到了解决方案:https://rnplay.org/apps/58
我正在尝试使用嵌套的 for 循环来显示星号菱形。 这是迄今为止我的代码: public class Diamond { public static void main(String[] ar
我正在做一个元素,我有一个需要响应的 div 钻石图片。 下图显示了我创建的 div 中的钻石,但它不适用于所有尺寸。我希望钻石能够对浏览器大小做出响应,因此它始终适合。 我有a jsFiddle ,
三角形 等腰直角三角形1 2.7 ? 1
我现在正在 ArgoUML 中设计 UML 事件图。 我知道如果我想设计如下条件: if(condition) { doTrueAction(); } else { doFalseAc
我有 2 个 SKSpriteNode: 一个简单的正方形 (A) 旋转(-45°)(B)的同一个正方形 我需要随时检查另一个 SKSpriteNode(一个球)的中心是否在这些方 block 之一内
1.输出上三角形 第一行1个星,第二行3个星,第三行5个星,第四行7个星,第五行9个星。 分析:三角形的形状由输出的空白和星组成,通过分析每一行输出几个空格,几个星,就可完成输出三角形的工作。
我想在 Swift 中创建一个带有 titleLabel 的菱形 UIButton。我的问题是,titleLabel 文本缩小并且仅显示三个点。如何扩展 titleLabel 的框架以获得足够的标题空
我是一名优秀的程序员,十分优秀!