visual-logging——Python,OpenCV调试应用程序的新工具
这篇博客将介绍如何使用可视化日志记录(visual-logging)来帮助可视化应用程序执行的管道。使用cv2.imshow和cv2.waitKey语句堵塞代码的日子已经一去不复返了!相反,只需使用可视化日志记录更加简单。
可视化日志记录——一款很棒的调试Python + OpenCV应用程序的新工具包。
调试OpenCV应用程序一直是混乱的调用cv2.imshow和cv2.waitKey。所有这些函数调用管理起来很痛苦,对于调试来说更糟糕。需要拍摄计算机视觉管道的每个迭代的屏幕截图。但现在可以利用可视化日志记录软件包来帮轻松调试和记录OpenCV应用程序。
1. 效果图
使用渐变的sigma模糊图像并检测边缘效果图如下:
可以看出,随着高斯核sigma的大小增加,图像变得越来越模糊。随着图像变得更加模糊,检测到的边缘也越来越少。
2. 安装
pip install visual-logging
3. 源码
# 使用Python,OpenCV更好的调试应用程序的工具——visual-logging,将介绍如何使用可视化日志记录(visual-logging)来帮助可视化应用程序执行的管道。import logging
# 导入必要的包
from logging import FileHandlerimport cv2
import imutils
from vlogging import VisualRecord# 打开日志文件
logger = logging.getLogger("visual_logging_example")
fh = FileHandler("demo.html", mode="w")# 设置logger属性
logger.setLevel(logging.DEBUG)
logger.addHandler(fh)# 加载图像转换为灰度图
image = cv2.imread("images/ym.jpg")
image = imutils.resize(image, width=100)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 遍历高斯核大小的渐变值
# 使用越来越大的sigma大小逐步模糊图像
for s in range(3, 11, 2):# 模糊图像并检测边缘blurred = cv2.GaussianBlur(image, (s, s), 0)edged = cv2.Canny(blurred, 75, 200)# 通常,要查看模糊和边缘检测的输出必须调用cv2.imshow和cv2.waitKey# 这里将创建一个 VisualRecord,并将高斯模糊和边缘映射记录到文件。这将使我们能够调试管道并轻松查看结果。logger.debug(VisualRecord(("Detected edges using sigma = %d" % (s)),[blurred, edged], fmt="png"))
参考
- https://pyimagesearch.com/2014/12/22/visual-logging-new-favorite-tool-debugging-opencv-python-apps/
- https://github.com/dchaplinsky/visual-logging