头歌之动手学人工智能-图像卷积特征提取

第1关:图像卷积特征提取

  • 任务描述

本关任务:编写一个能使用卷积滤波提取图像特征的小程序。

  • 相关知识

为了完成本关任务,你需要掌握:1.基本概念,2.如何使用卷积滤波提取图像特征。

  • 编程要求

根据提示,在右侧编辑器补充代码,完成两个函数,计算并输出函数所返回特征数组的和。

  • 测试说明

平台会对你编写的代码进行测试:

测试输入:一张RGB图;
预期输出:提取出特征数组的和。

# -*- coding:utf-8 -*-
# 导入相关函数
import cv2
import numpy as np
import matplotlib.pyplot as plt
# CNN算法
def CNN(img):
    # 构建卷积核w1
    w1 = np.array([[-1, -1, 0],
                    [-1, 0, 1],
                    [0, 1, 1]])
    # 构建卷积核w2
    w2 = np.array([[-2, -1, 0],
                     [-1, 0, 1],
                     [0, 1, 1]])

    # 使用opencv的卷积函数构造2个特征提取器
    #********* Begin *********#
    f1 = cv2.filter2D(img, -1, w1)
    f2 = cv2.filter2D(img, -1, w2)
    return f1,f2
    #********* End *********#

#主程序
if __name__ == '__main__':
    # 读取图像
    img_path = 'in/cat.jpg'
    image = cv2.imread(img_path)
    # CNN算法提取特征
    feature1,feature2 = CNN(image)
    #计算出提取到的特征图矩阵和的值
    #********* Begin *********#
    print(np.sum(feature1+feature2))
    #********* End *********#
    plt.subplot(121)
    plt.imshow(feature1)
    plt.title('feature1')
    plt.subplot(122)
    plt.imshow(feature2)
    plt.title('feature2')
    plt.savefig("cnn_pre/cnn_pre.png")

你可能感兴趣的:(头歌之动手学人工智能-图像卷积特征提取)