我想找到一个图像的轮廓然后画出它的凸包.我正在做的是加载图像,阈值,找到它的轮廓,然后绘制凸包.
gray = cv2.imread(test_paths[i], 0)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[0]
Run Code Online (Sandbox Code Playgroud)
检测到的轮廓数量等于1.如果我尝试绘制轮廓,问题就出现了
cv2.drawContours(cnt_dst, cnt, -1, (255, 0, 0), 3)
plt.imshow(cnt_dst)
Run Code Online (Sandbox Code Playgroud)
如果我将代码更改为以下内容:
cv2.drawContours(cnt_dst, contours, 0, (255, 0, 0), 3)
plt.imshow(cnt_dst)
Run Code Online (Sandbox Code Playgroud)
轮廓不同:
请注意,我得到了相同(好)的结果:
cv2.drawContours(cnt_dst, contours, -1, (255, 0, 0), 3)
Run Code Online (Sandbox Code Playgroud)
有关为什么会发生这种情况的任何想法?
我想绘制一个带有图像的图形。我正在进行k均值聚类,之后,我想以相同的框架颜色在其聚类上显示每个图像。
我有一些代码,基本上将图像放在带有黑框的图形上
fig = plt.gcf()
fig.clf()
ax = plt.subplot(111)
# add a first image
for i in range(0, len(dataset['val'].path)):
ab = AnnotationBbox(OffsetImage(img, zoom=.15, cmap='gray'),
[reduced_data[i][0], reduced_data[i][1]],
frameon=True,
xybox=(10, 10),
xycoords='data',
boxcoords="offset points",
arrowprops=dict(arrowstyle="-"))
ax.add_artist(ab)
plt.draw()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我正在查看有关scickit learn文档的一些教程,并且还检查了网页中的AnnotationBbox和OffsetImage构造函数matplotlib,但没有结果。我想知道是否有一种方法可以更改插入绘图中图像的框架颜色,以使其与我为每个群集提供的颜色匹配。
Pytorch中的列选择是否可以区分?例如,如果我想从每一行中选择一列以创建一个新的行X 1数组,然后使用此新数组作为背景,背景将正常工作吗?
qvalues = qvalues[range(5),[0,1,0,1,0]]
Run Code Online (Sandbox Code Playgroud)
如上所示从5 * 2张量完成元素选择?
我有两个列表,a b其中包含随机数量的元素(比如8),我想在这一点上进行分割cp.在那之后,我想保持列表的一部分,然后在其他列表中cp更改部分cp.
我使用以下代码:
cp = 4
a = [1, 3, 2, 4, 5, 8, 7, 6]
b = [3, 1, 5, 6, 2, 8, 4, 7]
parents = np.array([a,b])
parents[0][cp:], parents[1][cp:] = parents[1][cp:], parents[0][cp:]
print parents
# Print result:
# [[1 3 2 4 5 8 7 6]
# [3 1 5 6 5 8 7 6]]
Run Code Online (Sandbox Code Playgroud)
如代码中所示,我显然是因为它parents[0]在分配结束之前分配了子数组的值而得到错误.
如果我使用传统的python列表,这似乎工作正常:
a = [1,3,2,4, 5,8,7,6]
b = [3,1,5,6, 2,8,4,7]
a[cp:] , b[cp:] …Run Code Online (Sandbox Code Playgroud)