我正在尝试使用OpenCV简化以下图像:
我们这里有很多红色的形状.其中一些完全包含其他人.他们中的一些人与邻居相交.我的目标是通过用联合多边形的边界框替换任何两个相交的形状来统一所有相交的形状.(重复直到没有更多相交的形状).
通过交叉我的意思是触摸.希望这使它100%清晰:
我正在努力使用标准的形态学操作来有效地做到这一点; 显然它可以在O(N ^ 2)中天真地完成,但那太慢了.扩张没有帮助,因为一些形状只相差1px,如果它们没有相交,我不希望它们合并.
我有一个2D numpy数组,看起来像
array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 1., …
Run Code Online (Sandbox Code Playgroud) 我正在玩Haskell Raytracer,目前正在使用BVH实现,它强调一个天真的二叉树来存储层次结构,
data TreeBvh
= Node Dimension TreeBvh TreeBvh AABB
| Leaf AnyPrim AABB
Run Code Online (Sandbox Code Playgroud)
其中Dimension是X
,Y
或Z
(用于更快的遍历)和AABB是我的类型的轴对齐边界框.这种方法运行得相当不错,但我真的很想尽可能快地得到它.所以我的下一步(当使用C/C++时)将使用这个树来构造一个扁平表示,其中节点存储在一个数组中,"left"子节点紧跟在它的父节点和父节点的右子节点的索引之后与父母一起存储,所以我有这样的事情:
data LinearNode
= LinearNode Dimension Int AABB
| LinearLeaf AnyPrim AABB
data LinearBvh
= MkLinearBvh (Array Int LinearNode)
Run Code Online (Sandbox Code Playgroud)
我还没有真正尝试过这个,但我担心性能仍然低于标准,因为我不能将LinearNode
实例存储在UArray中,也不能将Int
正确子项的索引与组成该Float
值的值一起存储.单个UArray中的AABB(如果我弄错了,请纠正我).使用两个阵列意味着缓存一致性差.所以我基本上都在寻找一种有效存储树的方法,因此我可以期待良好的遍历性能.它应该是
当我意识到这个"问一个问题"页面上的"如何询问/格式化"侧边栏框完全符合我的要求时,我正在写一篇关于我想做什么的详细描述.
基本上,它与屏幕的其余部分一起向上和向下滚动,与主要部分保持顶部对齐,除非主要部分开始滚动到可见窗口的顶部.此时,侧边栏框停止滚动,并开始表现为绝对位于可见窗口的顶部.
我已经尝试在这个"询问"屏幕上挖掘源代码和脚本,但是有很多事情发生,这几乎是不可能的(对我来说,至少).我假设jQuery实际上使这种事情非常简单,但我是新手,所以我很难为自己搞清楚.(如果这原来是一个常见的问题,我的道歉-我一直在寻找了约一个小时,但也有这样,我一直没能挖了一个答案很多密切措辞jQuery的问题.)
在此先感谢您的帮助.
有没有办法获取文本节点的边界矩形?
getBoundingClientRect()方法仅在元素上定义,父元素比实际文本节点大.
我是python和Tensorflow的新手.我正在尝试从Tensorflow对象检测API运行object_detection_tutorial文件,但是当检测到对象时,我无法找到可以获取边界框坐标的位置.
相关代码:
# The following processing is only for single image
detection_boxes = tf.squeeze(tensor_dict['detection_boxes'], [0])
detection_masks = tf.squeeze(tensor_dict['detection_masks'], [0])
Run Code Online (Sandbox Code Playgroud)
...
我假设边界框被绘制的地方是这样的:
# Visualization of the results of a detection.
vis_util.visualize_boxes_and_labels_on_image_array(
image_np,
output_dict['detection_boxes'],
output_dict['detection_classes'],
output_dict['detection_scores'],
category_index,
instance_masks=output_dict.get('detection_masks'),
use_normalized_coordinates=True,
line_thickness=8)
plt.figure(figsize=IMAGE_SIZE)
plt.imshow(image_np)
Run Code Online (Sandbox Code Playgroud)
我尝试打印output_dict ['detection_boxes'],但我不确定数字是什么意思.有很多.
array([[ 0.56213236, 0.2780568 , 0.91445708, 0.69120586],
[ 0.56261235, 0.86368728, 0.59286624, 0.8893863 ],
[ 0.57073039, 0.87096912, 0.61292225, 0.90354401],
[ 0.51422435, 0.78449738, 0.53994244, 0.79437423],
Run Code Online (Sandbox Code Playgroud)
......
[ 0.32784131, 0.5461576 , 0.36972913, 0.56903434],
[ 0.03005961, 0.02714229, 0.47211722, 0.44683522],
[ 0.43143299, …
Run Code Online (Sandbox Code Playgroud) 哪里可以找到关于实现用于计算"脏矩形"的算法的参考,以最小化帧缓冲器更新?一种显示模型,允许任意编辑并计算更新显示所需的最小"位blit"操作集.
我想很多与D3.js一起工作的人已经经历过同样的事情:你的网络或你所采取的任何可移动元素如果被推到硬盘上,就会继续飞出svg-element.如果我的网络很大,外部节点就会消失,它们就会"落入世界的边缘".
我非常害羞有一种方法可以使svg的边框成为坚固的"墙",因此元素不能离开它并在空间中隐形飞行:)
你是怎么处理这个问题的?你是怎么解决的?
大卫先生,谢谢你
存在MATLAB代码以找到所谓的"最小体积包围椭圆体"(例如,这里,也在这里).为方便起见,我会粘贴相关部分:
function [A , c] = MinVolEllipse(P, tolerance)
[d N] = size(P);
Q = zeros(d+1,N);
Q(1:d,:) = P(1:d,1:N);
Q(d+1,:) = ones(1,N);
count = 1;
err = 1;
u = (1/N) * ones(N,1);
while err > tolerance,
X = Q * diag(u) * Q';
M = diag(Q' * inv(X) * Q);
[maximum j] = max(M);
step_size = (maximum - d -1)/((d+1)*(maximum-1));
new_u = (1 - step_size)*u ;
new_u(j) = new_u(j) + step_size;
count = count + 1; …
Run Code Online (Sandbox Code Playgroud) bounding-box ×10
python ×3
arrays ×2
d3.js ×1
dom ×1
framebuffer ×1
geometry ×1
graphics ×1
haskell ×1
image ×1
javascript ×1
jquery ×1
matlab ×1
numpy ×1
opencv ×1
porting ×1
position ×1
raytracing ×1
scroll ×1
tensorflow ×1
textnode ×1
vector ×1
wpf ×1