深度学习| 实战1-python基本操作

————————————————————————————
原文发表于夏木青 | JoselynZhao Blog,欢迎访问博文原文。
————————————————————————————

GitHub源码

深度学习教程与实战案列系列文章


深度学习 | 绪论
深度学习 | 线性代数基础
深度学习 | 机器学习基础
深度学习 | 实践方法论
深度学习 | 应用
深度学习 | 安装conda、opencv、pycharm以及相关问题
深度学习 | 工具及实践(TensorFlow)
深度学习 | TensorFlow 命名机制和变量共享、变量赋值与模型封装
深度学习 | TFSlim介绍
深度学习 | TensorFlow可视化
深度学习 | 训练及优化方法
深度学习 | 模型评估与梯度下降优化
深度学习 | 物体检测
深度学习| 实战1-python基本操作
深度学习 | 实战2-TensorFlow基础
深度学习 | 实战3-设计变量共享网络进行MNIST分类
深度学习 | 实战4-将LENET封装为class,并进行分类
深度学习 | 实战5-用slim 定义Lenet网络,并训练测试
深度学习 | 实战6-利用tensorboard实现卷积可视化
深度学习 | 实战7- 连体网络MINIST优化
深度学习 | 实战8 - 梯度截断
深度学习 | 实战9- 参数正则化


要求

设计python程序,首先安装并导入opencv库:
例如:conda install opencv
import cv2

然后使用cv2.imread()读取任意彩色图片为numpy矩阵,然后进行以下操作:
(1) 将图片的三个通道顺序进行改变,由RGB变为BRG,并用imshow()或者matplotlib中的有关函数显示图片
(2) 利用Numpy给改变通道顺序的图片中指定位置打上红框,其中红框左上角和右下角坐标定义方式为:假设学号为12069028,则左上角坐标为(12, 06), 右下角坐标为(12+90, 06+28). (不可使用opencv中自带的画框工具)
(3) 利用cv2.imwrite()函数保存加上红框的图片。

实验与结果

(1)将图片的三个通道顺序进行改变,由RGB变为BRG,并用imshow()或者matplotlib中的有关函数显示图片。
测试图片如下:
深度学习| 实战1-python基本操作_第1张图片
因为cv2读取图片的通道顺序为B,G,R,所以对应img[:,:,0],img[:,:,1], img[:,:,2]。
要求将RGB变为BRG,即R->B,G->R,B->G。而按照通道顺序,r在第三通道,则第三通道应为B,g在第二通道,则第二通道为R,b在第一通道,则第一通道为G,所以合并顺序应该为[g,r,b].

img = cv2.imread(img_name)
    b = img[:, :, 0]
    g = img[:, :, 1]
    r = img[:, :, 2]
    img = cv2.merge([g, r, b])
    cv2.imshow('BRG', img)
    k = cv2.waitKey(0)  # waitkey代表读取键盘的输入,括号里的数字代表等待多长时间,单位ms。 0代表一直等待
    if k == 27:  # 键盘上Esc键的键值
        cv2.destroyAllWindows()

运行结果为:
深度学习| 实战1-python基本操作_第2张图片

(2)利用Numpy给改变通道顺序的图片中指定位置打上红框

school_number = 18023032
    x1 = 18
    y1 = 2
    x2 = 30 + 18
    y2 = 32 + 2
    img[x1:x2 + 1, y1,0] = 0
    img[x1:x2 + 1, y1,1] = 0
    img[x1:x2 + 1, y1,2] = 255
    img[x1:x2 + 1, y2,0] = 0
    img[x1:x2 + 1, y2,1] = 0
    img[x1:x2 + 1, y2,2] = 255
    img[x1, y1:y2 + 1,0] = 0
    img[x1, y1:y2 + 1,1] = 0
    img[x1, y1:y2 + 1,2] = 255
    img[x2, y1:y2 + 1,0] = 0
    img[x2, y1:y2 + 1,1] = 0
img[x2, y1:y2 + 1,2] = 255

(3) 利用cv2.imwrite()函数保存加上红框的图片

cv2.imwrite(img_name2, img)
    img2 = cv2.imread(img_name2)
    cv2.imshow('BRG-1', img2)
    k = cv2.waitKey(0)  # waitkey代表读取键盘的输入,括号里的数字代表等待多长时间,单位ms。 0代表一直等待
    if k == 27:  # 键盘上Esc键的键值
        cv2.destroyAllWindows()

图片保存之后,再次通过cv2.imread()读取显示出来,结果如下:
深度学习| 实战1-python基本操作_第3张图片

源码展示

img_name = 'fff.png'
img_name2 = 'fff1.png'

import numpy as np
if __name__ == '__main__':
    img = cv2.imread(img_name)
    cv2.imshow('RGB', img)
    k = cv2.waitKey(0) # waitkey代表读取键盘的输入,括号里的数字代表等待多长时间,单位ms。 0代表一直等待
    if k ==27:     # 键盘上Esc键的键值
        cv2.destroyAllWindows()

    b = img[:, :, 0]
    g = img[:, :, 1]
    r = img[:, :, 2]
    # r, g, b = cv2.split(img)
    img = cv2.merge([g, r, b])
    cv2.imshow('BRG', img)
    k = cv2.waitKey(0)  # waitkey代表读取键盘的输入,括号里的数字代表等待多长时间,单位ms。 0代表一直等待
    if k == 27:  # 键盘上Esc键的键值
        cv2.destroyAllWindows()

    school_number = 18023032
    x1 = 18
    y1 = 2
    x2 = 30 + 18
    y2 = 32 + 2
    img[x1:x2 + 1, y1,0] = 0
    img[x1:x2 + 1, y1,1] = 0
    img[x1:x2 + 1, y1,2] = 255
    img[x1:x2 + 1, y2,0] = 0
    img[x1:x2 + 1, y2,1] = 0
    img[x1:x2 + 1, y2,2] = 255
    img[x1, y1:y2 + 1,0] = 0
    img[x1, y1:y2 + 1,1] = 0
    img[x1, y1:y2 + 1,2] = 255
    img[x2, y1:y2 + 1,0] = 0
    img[x2, y1:y2 + 1,1] = 0
    img[x2, y1:y2 + 1,2] = 255

    # img[x1:x2 + 1, y1] = (0, 0, 255)
    # img[x1:x2 + 1, y2] = (0, 0, 255)
    # img[x1, y1:y2 + 1] = (0, 0, 255)
    # img[x2, y1:y2 + 1] = (0, 0, 255)
    cv2.imwrite(img_name2, img)
    img2 = cv2.imread(img_name2)
    cv2.imshow('BRG-1', img2)
    k = cv2.waitKey(0)  # waitkey代表读取键盘的输入,括号里的数字代表等待多长时间,单位ms。 0代表一直等待
    if k == 27:  # 键盘上Esc键的键值
        cv2.destroyAllWindows()

你可能感兴趣的:(深度学习,DeepLearning,python,cv2,通道,深度学习,深度学习系统学习教程与实战案列)