Python:在不使用CV2的情况下以指定的线宽保存二进制线掩码?

时间:2018-09-26 14:45:51

标签: python image binary line mask

现在我有一张图像的起始线(79,143)和结束线(200,100),宽度为500,高度为500,我想用它们来保存一个像pic line mask这样的二进制掩码。 我可以使用skimage来保存它,但是线宽似乎是固定的,并且我确实想使用cv2,所以还有其他解决方案来保存具有自定义线宽的蒙版吗?

同时,我有一个cv2程序,但是它不起作用,

我有一个程序: import cv2 import numpy as np from matplotlib import pyplot as plt img = np.zeros((1080,1080,3),np.uint8) for i in range(3): im=np.squeeze(img[:,:,i]) print(im) imgg=cv2.line(im,(0,0),(511,511),255,5) masks=Image.fromarray((imgg).astype(np.uint8)) masks.save("masks"+str(i)+".png")

我想保存3个相同的蒙版,但它给出了错误:

输出数组img的布局与cv :: Mat不兼容(step [ndims-1]!= elemsize或step 1!= elemsize * nchannels)

有什么办法解决吗? 非常感谢!

非常感谢!

1 个答案:

答案 0 :(得分:0)

OpenCV绘图线function确实有一个thickness参数。您可以这样指定它:

# Setup an empty image
im = np.zeros((500, 500), dtype=np.uint8)

# Draw with thickness
im = cv2.line(im, (79,143), (200, 100), color=(255, 255, 255), thickness=10)