import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
im = np.array(Image.open('dog.png'), dtype=np.uint8)
plt.imshow(im)
Run Code Online (Sandbox Code Playgroud)
我不知道接下来要做什么.
我目前正在使用Bresenham的算法绘制线条,但它们(当然)厚度为一个像素.我的问题是绘制任意厚度线条的最有效方法是什么?
我使用的语言是C.
我想将Shapely用于我的计算几何项目。为此,我需要能够可视化和显示多边形,直线和其他几何对象。我试图为此使用matplotlib,但遇到了麻烦。
from shapely.geometry import Polygon
import matplotlib.pyplot as plt
polygon1 = Polygon([(0,5),
(1,1),
(3,0),
])
plt.plot(polygon1)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我希望能够在绘图中显示此多边形。我将如何更改我的代码来做到这一点?
我有以下图片
我使用找到轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
contour = contours[0]
Run Code Online (Sandbox Code Playgroud)
接下来,我确定center轮廓的
def find_center(contour: np.ndarray) -> tuple:
M = cv2.moments(contour)
x = int(M["m10"] / M["m00"])
y = int(M["m01"] / M["m00"])
return x, y
Run Code Online (Sandbox Code Playgroud)
我想在网格中显示轮廓,其中center代表原点/(0,0) 点。所以,我减去 的center每个 xy 点的contour。
接下来,我想使用这些新坐标作为 的输入plt.contour。我需要创建一个网格
xs = new_contour[:,:,0].flatten()
ys = new_contour[:,:,1].flatten()
x = np.arange(int(min(xs)), int(max(xs)), 1)
y = np.arange(int(min(ys)), int(max(ys)), 1)
X, Y = np.meshgrid(x, y)
Run Code Online (Sandbox Code Playgroud)
如何定义/处理Z输出开始如下所示:
编辑
按照建议,我尝试使用patch.Polygon.
p = …Run Code Online (Sandbox Code Playgroud)