在我的代码中,我读取一个图像,然后用matplot打印它。在myplotColor函数中,我想创建一个plt.title(图像),其中我传递的图像(lena或link)将显示为标题
因此,如果我做plotColor(lena),我会得到一个lena的plt,并以lena为标题
这段代码正确显示了我的所有图片,我知道我可以传递第二个文本字符串参数并使用它,但我想知道是否有办法通过只传递一个参数来实现这一点
def plotColor(image):
plt.figure()
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title("image")
lena = cv2.imread("lena.png")
link = cv2.imread("link.png")
plotColor(lena)
plotColor(link)
谢谢
编辑
我在创建的后续函数中调用该路径时遇到问题。(这是基于以下建议的解决方案)
def grayScale(image):
output = cv2.cvtColor(image.image, cv2.COLOR_BGR2GRAY)
return output
def plotGrayscale(image):
plt.figure()
plt.imshow(image.image, cmap='gray')
# plt.title(image.path)
尝试时无法添加image.path:plotGrayscale(grayScale(lena))
,因此无法在输出图像上创建标题
提出的解决方案不是一种实现你想要的东西的可靠方法;它依赖于
lena
和link
是全局定义的这一事实。例如,如果它们移动到另一个函数中,那么您将无法eval()
这些字符串。此外,仅仅为了使字符串可用,并不需要将字符串作为代码执行。如果要传递一个包含多个数据/信息的对象,只需创建一个类来保存这两个内容,并传递该类的实例即可。下面是一个简单的例子:如果你愿意,你可以在这里得到更多的幻想;例如,
PathedImage
可以对numpy数组进行子类化,使其行为与numpy数组完全相同,但添加了name
或path
属性实现所需功能的一种简单方法是将文件名作为参数传递给函数,并在函数内部打开图像文件。这样,您就可以使用文件名字符串来清理它并将其设置为图像标题。您还可以添加一个参数以具有单个打印功能,并选择是要打印彩色图像还是灰度图像:
相关问题 更多 >
编程相关推荐