————————————————————————————
原文发表于夏木青 | 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中的有关函数显示图片。
测试图片如下:
因为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()
(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()读取显示出来,结果如下:
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()