我的目标是显示二值图像,然后将边界轮廓绘制为覆盖图像的线。如果我这样做并将结果导出为 PDF,当人们从左下角移过图像时,我会看到图像和轮廓之间的错位逐渐恶化。因此,背景图像或轮廓的位置似乎存在乘法误差。
我认为这个问题是由 PDF 渲染器引起的。如果我以非常高的 DPI 以 PNG 格式输出结果,我可以解决该问题,但由于其他原因我更喜欢 PDF。有谁知道我是否可以更改设置以使 PDF 正确渲染?
这是一个示例和生成的图像。您可以看到左下角图像和轮廓之间的对齐情况良好,右上角最差。
import numpy as np
import matplotlib.pyplot as plt
import cv2
# Make a test image
img = np.zeros((100,100), dtype=np.uint8)
img[20:99,1:80] = 1
img = np.matlib.repmat(img, 9, 6)
# Extract contours
cntrs, hier = cv2.findContours(img, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
# Make overlay
fig = plt.figure(figsize=(6,9), dpi=300)
ax = fig.add_subplot()
ax.imshow(img, interpolation='none', cmap=plt.cm.gray)
for cntr in cntrs:
x = np.append(cntr[:, 0, 0], cntr[0, 0, 0])
y = np.append(cntr[:, 0, 1], cntr[0, …Run Code Online (Sandbox Code Playgroud)