OpenCV 传统的调试方式是 cv2.imshow()
cv2.waitKey()
,即显示一张图片,然后查看之后再销毁它,
这个操作实在是太不方便了,如果调试时,要显示指定程序位置的图片就需要在其之后添加 cv2.imshow() cv2.waitKey()
,满满的一屏图像看得眼花缭乱。
对!就是这种效果
但是,现在我们有了好用的工具 visual-logging 一个可视化的调试工具,它使用漂亮的 HTML 结构格式化所有内容。 这个包的功能类似于,你告诉它,我想在这里记录一下当前的结果是什么,它就会帮你截图保留下来,最后保存成一个 html 文件
安装也很简单
pip install visual-logging
我们用个例子说明一下,我们先读取一张图片,然后进行简单的自适应阈值函数处理,记录一下不同参数下的结果。
# USAGE
# python visual_logging_example.py
# 导入所需要的包
from logging import FileHandler
from vlogging import VisualRecord
import logging
import cv2
import webbrowser # 用来显示网页的
import os
# open the logging file
logger = logging.getLogger("visual_logging_example") # 创建一个指定名称的记录器
demo_file = "C:/BLOG/flyinglsj.github.io/_posts/OpenCV/OpenCV_demo/visual-logging-example/demo.html"
# if os.path.exists(demo_file) is not None:
# os.remove(demo_file)
fh = FileHandler(demo_file, mode="w") # 创建一个 html 文件,用来记录调试结果
# set the logger attributes
logger.setLevel(logging.DEBUG) # 创建记录器的等级
logger.addHandler(fh) # 将指定的处理程序添加到记录器
# 调试用例
image = cv2.imread(
"C:/BLOG/flyinglsj.github.io/_posts/OpenCV/OpenCV_demo/visual-logging-example/Laplacian.jpg"
)
img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 第一次添加记录
logger.debug(VisualRecord("src", [image], fmt="png"))
# 使用自适应阈值函数处理
for s in range(1, 6, 2):
img_gray = cv2.medianBlur(img_gray, s)
img_edge = cv2.adaptiveThreshold(img_gray,
255,
cv2.ADAPTIVE_THRESH_MEAN_C,
cv2.THRESH_BINARY,
blockSize=3,
C=2)
logger.debug(VisualRecord(("ksize = %d" % (s)), [image, img_edge], fmt="png"))
webbrowser.open_new_tab(demo_file)
运行完程序以后,会自动生成一个 html 文件,顺便帮你自动打开它,是不是很方便。