相关疑难解决方法(0)

matplotlib:如何在图像上绘制一个矩形

如何在图像上绘制矩形,如下所示: 在此输入图像描述

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)

我不知道接下来要做什么.

python image matplotlib

107
推荐指数
4
解决办法
15万
查看次数

如何使用Bresenham创建任意厚度的线?

我目前正在使用Bresenham的算法绘制线条,但它们(当然)厚度为一个像素.我的问题是绘制任意厚度线条的最有效方法是什么?

我使用的语言是C.

algorithm graphics

24
推荐指数
6
解决办法
2万
查看次数

如何使用matplotlib绘制形状复杂的多边形和对象?

我想将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)

我希望能够在绘图中显示此多边形。我将如何更改我的代码来做到这一点?

python matplotlib shapely

10
推荐指数
5
解决办法
8302
查看次数

使用 cv2.findContours 输出作为 plt.contour 输入

我有以下图片

在此输入图像描述

我使用找到轮廓

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)

python opencv image-processing matplotlib contour

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