- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Jupyter Notebook 用 IPython 编写了代码,可以查找图像的所有黑色像素并找到它们之间的最短路径。
我想要类似的 3D 内容。使用点云,我拥有在 3D 空间中定义对象的点的坐标。我怎样才能找到它们之间最短/最逻辑的路径来绘制它们/将点连接成一行。
是否可以调整 2D 代码(删除与像素有关的任何内容,仅输入 x、y、z 坐标?)
The Goal: Input 3D coordinates, find the most logical/least messy path connecting them all, using this new path, reorder the coordinates from start --> end of the path, output these organized coordinates.
这是我当前的二维代码:
class ImageObject:
def __init__(self, url):
self.url = url
response = requests.get(url)
self.img = Image.open(BytesIO(response.content))
self.og_size = self.img.size
def show(self):
imshow(np.asarray(self.img))
def monochrome(self, scale=3, threshold=200):
# convert image to monochrome
image = self.img.convert('L')
image_array = np.array(image)
# Binarize a numpy array using threshold as cutoff
for i in range(len(image_array)):
for j in range(len(image_array[0])):
if image_array[i][j] > threshold:
image_array[i][j] = 255
else:
image_array[i][j] = 0
image = Image.fromarray(image_array)
# scale image down to reduce number of non-zero pixels
img_sm = image.resize(tuple([int(v/scale) for v in image.size]),Image.ANTIALIAS)
# convert image to black and white
img_bw = img_sm.convert(mode='1', dither=2)
self.bw_img = img_bw
self.pixels = (1 - np.asarray(img_bw).astype(int))
self.pixels_flat = np.reshape(self.pixels, self.pixels.size)
def show_bw(self):
print("Dimensions: {}".format(self.bw_img.size))
print("Num. pixels: {}".format(self.pixels.sum()))
imshow(np.asarray(self.bw_img))
def get_tour(self, starting_point="random", plot=True):
# Get greedy tour through pixels
absolute_index = np.where(self.pixels_flat > 0)[0] # positions of non-zero pixels
relative_index = np.array(range(1, len(absolute_index)+1 ))
# Replace each non-zero pixel in the array with its number
# i.e., the 10th non-zero pixel will have 10 in its place
flat_img_mod = deepcopy(self.pixels_flat)
for rel, pix in enumerate(absolute_index):
flat_img_mod[pix] = rel+1
# Get coordiantes for each non-zero pixel
img_idx = np.reshape(flat_img_mod, self.pixels.shape)
self.coord_list = []
for p1 in relative_index:
p1_coords = tuple([int(c) for c in np.where(img_idx==p1)])
self.coord_list.append(list(p1_coords))
# Calcualte distance between each pair of coords
dist_mat = distance.cdist(self.coord_list, self.coord_list, 'euclidean')
# Initialize search space with nearest neighbor tour
cities = self.coord_list
num_cities = len(cities)
if starting_point=="random":
start = int(np.random.choice(range(num_cities),size=1))
else:
assert starting_point < num_cities
start = starting_point
tour = [start]
active_city = start
for step in range(0, num_cities):
dist_row = deepcopy(dist_mat[active_city,:])
for done in tour:
dist_row[done] = np.inf
nearest_neighbor = np.argmin(dist_row)
if nearest_neighbor not in tour:
tour.append(nearest_neighbor)
active_city = nearest_neighbor
y_tour = -np.array([cities[tour[i % num_cities]] for i in range(num_cities+1) ])[:,0]
y_tour = y_tour - y_tour[0]#- min(y_tour)
x_tour = np.array([cities[tour[i % num_cities]] for i in range(num_cities+1) ])[:,1]
x_tour = x_tour - x_tour[0]#- min(x_tour)
# Circle tour back to beginning
np.append(x_tour, x_tour[0])
np.append(y_tour, y_tour[0])
num_cities = num_cities + 1
self.x_tour = x_tour
self.y_tour = y_tour
self.num_pixels = num_cities
if plot:
plt.plot(self.x_tour, self.y_tour)
def get_splines(self, degree=5, plot=True):
# Convert tours into parametric spline curves
x_spl = UnivariateSpline(list(range(0,self.num_pixels)), self.x_tour, k=degree)
y_spl = UnivariateSpline(list(range(0,self.num_pixels)), self.y_tour, k=degree)
self.x_spl = x_spl
self.y_spl = y_spl
if plot:
p = plt.plot(*zip(*[(x_spl(v), y_spl(v)) for v in np.linspace(0, self.num_pixels-1, 1000)]))
def plot_parametric(self, num_points=1000):
# num_points = number of points at which to sample the curves
t_vals, x_vals = zip(*[
(v, self.x_spl(v)) for v in np.linspace(0, self.num_pixels, num_points)
])
x_vals = np.array(x_vals)
y_vals = np.array([self.y_spl(v) for v in np.linspace(0, self.num_pixels, num_points)])
t_vals = np.array(t_vals)
plt.plot(t_vals, x_vals)
plt.plot(t_vals, y_vals)
最佳答案
使用mathematica的FindShortestTour
函数
Find the length and ordering of the shortest tour through points in the plane:
In[1]:=
Click for copyable input
✕
pts = {{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {2, 1}, {2, 3}, {2,
5}, {3, 1}, {3, 2}, {3, 4}, {3, 5}, {4, 1}, {4, 3}, {4, 5}, {5,
1}, {5, 2}, {5, 3}, {5, 4}};
Copy to clipboard.
In[2]:=
Click for copyable input
✕
pts = {{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {2, 1}, {2, 3}, {2,
5}, {3, 1}, {3, 2}, {3, 4}, {3, 5}, {4, 1}, {4, 3}, {4, 5}, {5,
1}, {5, 2}, {5, 3}, {5, 4}};
FindShortestTour[%]
Copy to clipboard.
Out[2]=
Order the points according to the tour found:
In[3]:=
Click for copyable input
✕
pts = {{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {2, 1}, {2, 3}, {2,
5}, {3, 1}, {3, 2}, {3, 4}, {3, 5}, {4, 1}, {4, 3}, {4, 5}, {5,
1}, {5, 2}, {5, 3}, {5, 4}};
FindShortestTour[%];
pts[[Last[%]]]
Copy to clipboard.
Out[3]=
Plot the tour:
In[4]:=
Click for copyable input
Copy to clipboard.
Out[4]=
关于python - 使用最小/最有效路径(Scipy distance.cdist)3D 浏览坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57359426/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!