2024年12月

scikit-image 提供了一个match_template()函数,不过这个函数的定位并不是像VisionPro中的PMAlign(或者VisionMaster中的模板匹配),它不是一个端到端的工具,而是输出一个用模板滑过图像窗口形成的相关系数矩阵:即结果是一个矩阵,每个值表示在相应窗口位置时,模板与图像窗口的相关性。

这个函数的作用类似于我们手写一个人脸检测模块时,在第一阶段构建的人脸分类+滑动窗口的功能——即输出每个位置的得分,以表示每个区域是否存在人脸(或者存在人脸的概率)。但是随之而来的问题是,位置相近的窗口会有多个,但是它们都是同一个实体对象。这篇笔记组合了match_template()NMS算法,实现一个端到端的模板匹配功能。

实现对象

我们今天的实验对象是scikit-image官方的硬币示例:

image = data.coins()
coin = image[170:220, 75:130]

fig, ax = pyplot.subplots(1, 2)

ax0: axes.Axes = ax[0]
ax0.imshow(image, cmap='gray')
ax0.set_title("image")

ax1: axes.Axes = ax[1]
ax1.imshow(coin, cmap='gray')
ax1.set_title("template")

scikit-image模板匹配-截图1.PNG

阅读剩余部分

今天在使用sktime库的时候遇到了解码失败的问题:

from sktime.datasets import load_airline

报错类似于:

{
    "name": "UnicodeDecodeError",
    "message": "'gbk' codec can't decode byte 0xb8 in position 4507: illegal multibyte sequence",
    "stack": "---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
Cell In[19], line 1
----> 1 from sktime.datasets import load_airline

显然这是个编码问题,我第一时间检查了VSCode中的默认编码,确保是utf-8无误。

于是我怀疑大概率是程序编码出了问题,试了修改默认编码:

阅读剩余部分