在 Python 中向 Growl 添加动态图标 OpenCV 图像

问题描述

我向同样使用 OpenCV 的 Python 应用程序添加了 Growl 通知。基本的工作正常:

image = open('image.png','rb').read()

growl.notify(
        noteType = "Messages",title = "Title",description = "Description",icon = image,sticky = False,priority = 1,)

图像只是一个普通的旧 PNG。

接下来,我尝试制作一个自定义图标,在其中向该 PNG 添加一些文本(仅数字)。经过一番搜索,得出了这个:

image = cv2.imread('image.png',0)
 cv2.putText(image,text='40',org=(10,10),fontFace= cv2.FONT_HERShey_DUPLEX,fontScale=0.2,color=(0,0),thickness=2,lineType=cv2.LINE_AA)

在咆哮通知之前调用,我收到此错误

  File "/usr/local/lib/python3.9/site-packages/gntp/notifier.py",line 133,in notify
    if icon:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我现在意识到 OpenCV 将其转换为某种数组。如何将此图像“转换”回 PNG 等,这是咆哮所期望的。我不希望每次都保存动态图像,但如果这是唯一的方法,我可以这样做。

我确信这可能是微不足道的,但对于我的初学者 opencv 和 python 知识来说,这对我来说并不明显。此外,该解决方案不需要基于 OpenCV。这只是我找到的第一个

解决方法

在您的 <PostSharpReadyToRunDisabled>True</PostSharpReadyToRunDisabled> 调用的这一行中:

growl.notify

icon = image, 应为 icon URL path

但是,看起来您创建的 image 实际上是一个数组,Python 在尝试查看它是否为“true”时不知道如何处理 here