【发布时间】:2019-03-19 12:52:34
【问题描述】:
我想掩盖由我创建的样条线定义的“V”区域之外的所有内容。我追求的结果是一个 3D 数组,其中“V”之外的区域设置为 0 或 255。
我对使用fill_between 不感兴趣,因为我需要感兴趣的区域以便以后使用 CV2 进行处理。
谢谢!
这是我所拥有的:
import matplotlib.pyplot as plt
from scipy import misc, interpolate
# Show the image ---------------- |
f = misc.face()
plt.imshow(f)
# Make the V shape ---------------- |
x1 = [200, 400, 600]
y1 = [0, 300, f.shape[0]]
# Fit spline
tck = interpolate.splrep(x1, y1, k=2)
xx1 = range(min(x1), max(x1))
yy1 = interpolate.splev(xx1, tck)
# Repeat
x2 = [700, 850, 960]
y2 = [f.shape[0], 200, 0]
# Fit spline
tck = interpolate.splrep(x2, y2, k=2)
xx2 = range(min(x2), max(x2))
yy2 = interpolate.splev(xx2, tck)
# Plot splines ---------------- |
plt.plot(xx1, yy1, 'r-', lw=4)
plt.plot(xx2, yy2, 'r-', lw=4)
plt.show()
【问题讨论】:
-
你能显示预期的图像吗?
-
红线外侧应为黑色。我会更新
-
所有图像的形状总是相同的吗?
-
它始终是样条曲线,是的。线路的某些参数可能会发生变化。
标签: python image-processing cv2