标签: shape

复杂的形状识别

我需要完成演示项目,旨在识别X射线图像上的牙齿.我不熟悉这个主题,我不确定在这种情况下哪种方法更适合.(我在考虑纹理分割 - 但这只是一个猜测,我仍然不确定这是否是一个选项)

我需要做的是基本上获得牙齿的方向(角度)和放置在每个牙齿轮廓上的点集,以完成任务特定的计算.

请提供有关可能有用的方法和算法/库的建议.C#是可以执行的,但其他语言也可以.

提前致谢.

图像样本都与此类似(我特别感兴趣的是右边第二和第三颗牙齿):

opencv image-processing shape image-recognition itk

5
推荐指数
1
解决办法
2108
查看次数

处理鼠标右键双击形状

我怎么能处理这个Mouse Right Button Double Click事件Shape

c# wpf shape double-click mouseevent

5
推荐指数
1
解决办法
2069
查看次数

Android中的动画形状颜色

我想在我的Android代码中的某处创建一个循环,以某种速率连续地改变两种颜色之间的可绘制矩形的颜色.我想用两个按钮开始并停止闪烁.我已经做了很多研究,但似乎无法弄清楚如何去做.我是android新手,没有run()方法的经验.但我猜我必须使用run()方法制作某种矩形类,它会将其设置为更改颜色的动画.

animation android colors shape

5
推荐指数
1
解决办法
883
查看次数

Java中形状的快速联合

我正在开发一个用于提取 SVG 图像轮廓的库。在 Java 中使用 Batik 使将 SVG 文件转换为扩展形状(java.awt.geom.Shape实例)的过程变得非常有趣——对于相对复杂的形状,我们在毫秒级进行此操作。但是,由于我需要一个组合轮廓,我java.awt.geom.Area使用.add(shape). 出乎意料的是,即使对于相对简单的形状,这也非常慢。“令人难以置信”是指在 36 秒内将 8 个形状加在一起,每个形状 6-10 个点。

运行的代码-Xrunhprof提示,大多数的时间都花在java.awt.geom.AreaOp.pruneEdges(..)java.lang.StrictMath.acos是最大的罪魁祸首。将替代实现 ( AreaX) 与结合FastMath仅产生微不足道的改进,而我对处理任意几何形状的 Java 库的搜索却是空洞的。

那么问题是,在没有这种疯狂的性能损失的情况下,在 Java 中创建形状联合的方法是什么?是否有一些库或方法可以帮助实现这个看似简单的操作?

java union geometry shape

5
推荐指数
1
解决办法
1647
查看次数

如何从缩放中防止android层可绘制形状(例如圆圈)

我尝试使用XML layer-list drawable创建一个简单的插图.
我有两个形状,一个圆形和一个矩形
我想要一个不按比例的圆圈.
以下是布局:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

    <ImageView
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/shape5"
        android:layout_gravity="center"
        android:scaleType="center"
        />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是shape5.xml drawable

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:top="0dp" android:left="0dp">
        <shape android:shape="rectangle" android:scaleType="center">
            <stroke android:width="2dp" android:color="@android:color/holo_red_light" />
            <size android:width="200dp" android:height="100dp"/>
        </shape>
    </item>

    <item android:top="10dp" android:left="10dp">
        <shape android:shape="oval" android:gravity="center" android:scaleType="center" >
            <stroke android:width="2dp" android:color="@android:color/holo_blue_light" />
            <corners android:radius="10dp" />
            <size android:width="20dp" android:height="20dp"/>

        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

生成的图形如下所示:

渲染活动的屏幕截图

很明显,项目android:top可以完成工作,但没有什么能阻止形状缩放.大小宽度不起作用,android:scaleType ="center"也不起作用.

我快速查看了LayerDrawable.java实现.看起来像在幕后,从项目属性创建插入.所以我想通过计算那些我可以达到结果,我想要的.这是唯一的方法吗?

更新:

根据这个答案,我知道操纵项目的android:top,android:left等,我可以创建一个虚拟插图,可以根据我的需要扩展我的"形状".我查了一遍,这是对的.所以这是一个解决方法.然而,我对它的反直觉感到非常失望.我仍然希望有人能指出我一种简单的方法来禁用缩放.

更新:根据此Google Android文档页面,设置ImageView scaleType应该已禁止缩放.显然在我的情况下,它没有用.缺了点什么.

xml android shape xml-drawable layer-list

5
推荐指数
1
解决办法
5112
查看次数

具有优化的形状算法

我有一个由直线段定义的形状.

我想简化用直线构造的形状,但只有一组有限的斜率.

我想尽量减少使用的段数,并尽量减少区域与前后形状的差异.

我想用用户定义的重量同时最小化这两件事,强调最小化另一个.

minimize { J = w1(number of segments/length) + w2(difference area/length) }
Run Code Online (Sandbox Code Playgroud)

w1w2均为重量和长度是新段的长度.我想要一个算法来做到这一点.有任何想法吗?

下面我展示一些我可能希望它如何工作的图片.文献中是否有任何可能有助于编写算法的内容.谢谢!

在此输入图像描述

algorithm shape mathematical-optimization

5
推荐指数
1
解决办法
101
查看次数

如何为QGraphicsItem中有孔的形状获取鼠标悬停事件?

QGraphicsPathItem在 Qt 中有一个(使用 Python 中的 PySide 绑定),其中有一个大矩形和一个小矩形。由于默认填充规则 ( Qt.OddEvenFill),内部矩形是透明的。这有效地绘制了一个带孔的形状。

现在我想听听像进入,离开鼠标事件,单击,...我的简单实现的方法hoverEnterEvent,..中QGraphicsItem不会产生鼠标事件移动过孔时,因为孔仍是该项目的一部分,即使它是没有填满。

我想要一个QGraphicsItem衍生物,它显示一个自定义形状,其轮廓由一个QPainterPath或一个或多个多边形定义,并且可以有孔,当鼠标进入孔时,这被视为形状的外部。

带孔的示例形状(当鼠标位于内部矩形中时,应将其视为形状的外部,并应触发鼠标离开事件):

有洞的形状

然而,该解决方案也适用于带孔的任意形状。

PySide/Python 3.3 中的示例代码

from PySide import QtCore, QtGui

class MyPathItem(QtGui.QGraphicsPathItem):

    def __init__(self):
        super().__init__()
        self.setAcceptHoverEvents(True)

    def hoverEnterEvent(self, event):
        print('inside')

    def hoverLeaveEvent(self, event):
        print('outside')

app = QtGui.QApplication([])

scene = QtGui.QGraphicsScene()
path = QtGui.QPainterPath()
path.addRect(0, 0, 100, 100)
path.addRect(25, 25, 50, 50)

item = MyPathItem()
item.setPath(path)
item.setBrush(QtGui.QBrush(QtCore.Qt.blue))

scene.addItem(item)

view = QtGui.QGraphicsView(scene)
view.resize(200, 200)
view.show()

app.exec_()
Run Code Online (Sandbox Code Playgroud)

python qt shape mouseevent pyside

5
推荐指数
1
解决办法
1756
查看次数

新创建的自定义列表形状在Microsoft Visio 2013 x64中不起作用

目的:

首先,我应该说我想做什么,然后在下一部分(描述)中描述为实现我的目标而要做的事情。

我想从功能区“插入”选项卡中“图零件”部分的“ 普通容器”创建“ 自定义列表主形状”。然后,我想创建另一个Master Shape,它可以用作Created Custom List Master Shape的成员形状

换句话说,我想将“ 创建的主形状”添加到“ 自定义列表”主形状中,例如将“ 成员”和“分隔符”主形状附加到UML模具的“ 类”主形状中。

因此,在实现我的目标时遇到了一些问题,我将在下一部分中对其进行描述。


说明:

在“ Visio模具(.vssx)”文件中创建了一些新的Master Shape,如下所示:

新创建的具有使用过的主形状的主形状

图1-使用旧的主形状新建的主形状

  1. 属性主形状(绿色框):UML类模具(蓝色框)成员主形状创建。
  2. 对象主形(红色框):从功能区的“插入”选项卡中“图零件”部分的“ 普通容器创建。

已创建属性主形状,以用作对象主形状中的成员形状,就像在UML模具的类主形状中使用的成员主形状一样。

拥有初始成员的班级大师造型

图2-具有初始成员的类主形

成员主形创建的属性主形已更改如下:

  • 我向其中添加了一个形状数据(图3)。

    属性主形状的“形状数据”对话框

    图3-Property Master Shape的“ Shape Data”对话框

  • 我向其中添加了一个数据图形项(图4)。

    属性主形状的“数据图形”和“数据图形项”对话框

    图4-属性主形的“数据图形”和“数据图形项”对话框

  • 我更改了ShapeSheet窗口的 …

visio shape shapes shapesheet stencils

5
推荐指数
1
解决办法
1283
查看次数

TypeError:“张量”对象不能解释为整数

我正在尝试根据数组的大小运行循环。如何在张量流中做到这一点?例如

# input pipeline with all files available in the folder
a = tf.Variable([1,2,3,4,5],dtype = tf.int32)
loop = tf.size(a)
....
for i in range(loop):
    print(sess.run(a))
Run Code Online (Sandbox Code Playgroud)

我想将数组a打印5次。但是它说loop是一个张量对象,不能作为整数。我尝试将循环变量作为

loop = tf.cast(tf.size(a),tf.int32),
loop = tf.shape_n(a),
loop = tf.shape(a)[0]
Run Code Online (Sandbox Code Playgroud)

它具有相同的错误。

python variables size shape tensorflow

5
推荐指数
1
解决办法
8090
查看次数

熊猫自动将行转换为列

我有一个非常简单的数据框,如下所示:

In [8]: df
Out[8]: 
   A  B  C
0  2  a  a
1  3  s  3
2  4  c  !
3  1  f  1
Run Code Online (Sandbox Code Playgroud)

我的目标是以这种方式提取第一行:

   A  B  C
0  2  a  a
Run Code Online (Sandbox Code Playgroud)

如您所见,数据框形状(1x3)被保留,第一行仍具有3列。

但是,当我键入以下命令时df.loc[0],输出结果是这样的:

df.loc[0]
Out[9]: 
A    2
B    a
C    a
Name: 0, dtype: object
Run Code Online (Sandbox Code Playgroud)

如您所见,该行已变成具有3行的列!(3x1而非3x1)。这怎么可能?如何简单地提取行并保留目标中描述的形状?您能提供一种聪明而优雅的方法吗?

我尝试使用transpose命令,.T但是没有成功...我知道我可以创建另一个数据框,其中的列是由原始数据框提取的,但是这种方式非常繁琐且不太优雅,我会说(pd.DataFrame({'A':[2], 'B':'a', 'C':'a'}))。

如果需要,这是数据框:

import pandas as pd
df = pd.DataFrame({'A':[2,3,4,1], 'B':['a','s','c','f'], 'C':['a', 3, '!', 1]})
Run Code Online (Sandbox Code Playgroud)

python row shape dataframe pandas

5
推荐指数
1
解决办法
906
查看次数