zhelper-cvtool (opencv debug tool)
https://github.com/bbqz007/zhelper-cvtool
一个简易工具,帮你调试使用opencv装拼图像处理流。
cvtool images/SuperMario.mp4 anno,cascade
cvtool images/SuperMario.mp4 match
morphology,channel,canny,contours
range,crop
match
anno,cascade
https://github.com/bbqz007/zhelper-cvtool
2024 update
将原来cvtool仓库重命名为opencv-debugtool。并打包两个win32平台下的程序包,分别对于opencv3跟opencv4。
这是一个用来调试opencv程序处理流的简易工具。主要是几年前用于opencv3跟opencv4。工具设计成filter-pipelining模式,将处理流的每个算法处理作为一个filter,每个filter提供参数设定以及处理后的图像输出结果。一般地,用于识别跟探测的算法放在最后一个filter。所以使用N个filter就会有多于N图像窗口输出。空格键会运行图像源的下一帧。mouse左键可以划区域,mouse中键双击确定提交区域。
如果cvtool.h没有你要求的filter,你只需要实现一个itf_filter的自定义filter,并实现方法itf_filter::_filter(Mat&)。不要忘记在工厂方法createFilter添加你的自定义filter。所有filter运行在filter_graph,以推模式生产Mat结果传递到下一filter。
仓库地址:
https://github.com/bbqz007/opencv-debugtool
https://gitee.com/bbqz007/zheper-cvtool
下载地址
https://github.com/bbqz007/opencv-debugtool/releases
https://gitee.com/bbqz007/zheper-cvtool/releases
首先来看旧检测haarcascade。
cvtool %YourImageSoureFile% cascade可以运行你的训练结果。
cvtool %YourImageSoureFile% anno可以帮助生成annotations。只要按住ctrl并用mouse左键划一个矩形区,多个矩形区可以重叠,然后双击mouse中指键就会生成pos跟neg。生成好足够多的素材后,就可以通过opencv_createsamples生成训练素材,再配合opencv_traincascade进行训练。命令可以参考仓库的TRAINING.REC.MD。
经过漫长生命消耗后,得到训练结果cascade.xml文件,并放到cascade目录下,运行cvtool于cascade就可以观察效果。当然了一开始效果不理想,需要添加素材,这时可以anno,cascade配搭使用。一边观察效果,一边添加素材。当有一帧cascade窗口显示识别效果不好,就可以在anno窗口划对象区域添加素材。一轮下来又累积了不少素材,又可以进入再次训练愉快地消耗生命,然后就不断再次又再次,重复又重复,一连五晚务求让ML睇真D。
除了通过ML的检测方法外,opencv还有其它非ML用于检测方法。
使用matchtemplate算法。进行对比匹配。找相似目标。
cvtool %YourImageSoureFile% match。打开filter_graph后,在select窗口用mouse左键划一目标小方块,就会运行matchetemplate检测目标小方块。输出有两个窗口,一个窗口输出混合原图跟匹配结果,另一个窗口输出算法结果Mat。当然你还可以在match前置各种图像处理filter。
使用blob算法,检测对象。下例配合高斯模糊处理。
cvtool %YourImageSoureFile% morphology,blob
使用contours算法找轮廓。
cvtool %YourImageSoureFile% pyrDown,pyrUp,morphology,channel,canny,contours
如果图像太乱,可以配合crop滤镜,缩小检测范围。
cvtool %YourImageSoureFile% crop,pyrDown,pyrUp,morphology,channel,canny,contours
range,crop可以擦除背景