《入门图像处理》(一)计算机视觉入门
喵喵与呱呱 人气:1主要分为2个部分:opencv入门+tensorflow入门、穿插numpy+matplotlib入门知识
1.安装tensorflow1.10和opencv3.3.1:
安装tensorflow和opencv:
pip install --upgrade --ignore-installed tensorflow==1.10 -i http://pypi.douban.com/simple/ pip install python-opencv -i http://pypi.douban.com/simple/
测试安装是否成功:
#1.tensorflow测试 import tensorflow as tf hello = tf.constant("hello tf") sess = tf.Session() print( sess.run(hello) ) #1.opencv测试 import cv2 as cv print("hello opencv")
2.opencv入门:
#(一)opencv图片读取与展示 import cv2 #imread完成了什么? #1.数据读取 2.封装格式解析 3.数据解码 4。数据加载 img = cv2.imread("image0.jpg", 1)#1.读取图片,后面1代表彩色图片,0代表灰度 cv2.imshow("image", img)#2.展示图片,第一个是窗体名称,第二个是数据 cv2.waitKey(0)#3.暂停展示 #(二)图片的写入 import cv2 img = cv2.imread("image0.jpg", 1) cv2.imwrite(("image_demo.jpg"), img)#写入:1 name 2 data数据 #(三)图片的质量 jpg图片 有损压缩 import cv2 img = cv2.imread('image0.jpg', 1) #图片质量在imwrite里[cv2.IMWRITE_JPEG_QUALITY, 0到100] #压缩率在0%到100%(0-100) #是有损压缩,压缩率越大,图片越好 cv2.imwrite('image_demo1.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 50]) #(四)图片的质量 png图片 无损压缩 import cv2 img = cv2.imread('image0.jpg', 1) #png图片处理:cv2.IMWRITE_PNG_COMPRESSION使用压缩比COMPRESSION #压缩比:范围0-9,越小,图片越好 cv2.imwrite('image_demo1.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 0]) #(五)像素操作基础 #1.什么是像素:一个个像素点 #2.像素点由RGB3种颜色组成,RGB 3个颜色通道:R G B #3.RGB3种颜色 颜色深度:8bit 0-255 #4.图片宽高:像素点个数 #5.图片大小计算:宽 x 高 x 3 x 8 bit -> 除8 -> B --> M #6.png图片可能还有RGB alpha(透明度) #7.除了RGB还可能是bgr格式(蓝,绿, 红) #opencv读取格式:bgr格式 #(六)像素读取、写入 #像素读取写入:img[y轴, x轴] import cv2 #1.读取data 2.像素读取 3.像素写入 img = cv2.imread("image0.jpg", 1) (b, g, r) = img[100, 100]#读取100,100处像素点 print(b, g, r) #绘制一条横的直线(326,325)->(326, 425) for i in range(325, 426): img[326, i] = (255, 0, 0)#一条蓝色的线 cv2.imshow('image', img) cv2.waitKey(0)
3.tensorflow入门:
#(一)定义常量,变量 import tensorflow as tf data1 = tf.constant(2.5, dtype=tf.float32)#定义常量(data, 类型) data2 = tf.Variable(10, name="var")#定义变量(data, name) print(data1) print(data2) ''' sess = tf.Session() #变量必须初始化 init = tf.global_variables_initializer()#变量必须初始化 sess.run(init)#变量必须初始化再用session跑一下 print(sess.run(data1)) print(sess.run(data2)) sess.close() #tensorflow本质 = tensor op 计算图 #1.tensor = 数据 = data1 、data2 #2.op = 操作符 +-×÷ #3.计算图 = 对于数据的操作 #session = 交互核心 ''' #代码优化 sess = tf.Session() init = tf.global_variables_initializer()#变量初始化 with sess: sess.run(init) print(sess.run(data1)) print(sess.run(data2)) #(二)常量的四则运算 import tensorflow as tf sess = tf.Session() data1 = tf.constant(2) data2 = tf.constant(6) dataAdd = tf.add(data1, data2)#加 dataSub = tf.subtract(data1, data2)#减 dataMul = tf.multiply(data1, data2)#乘 dataDiv = tf.divide(data1, data2)#除 with sess: print(sess.run(dataAdd)) print(sess.run(dataSub)) print(sess.run(dataMul)) print(sess.run(dataDiv)) print('end') #(三)变量的四则运算 import tensorflow as tf sess = tf.Session() data1 = tf.constant(2) data2 = tf.Variable(6)#变量 dataAdd = tf.add(data1, data2)#加 #追加dataAdd的结果放到data2中 = 将dataAdd值赋给data2 datacopy = tf.assign(data2, dataAdd)#追加:dataAdd->data2 dataSub = tf.subtract(data1, data2)#减 dataMul = tf.multiply(data1, data2)#乘 dataDiv = tf.divide(data1, data2)#除 #变量初始化 init = tf.global_variables_initializer() with sess: sess.run(init)#变量初始化 print(sess.run(dataAdd)) print(sess.run(dataSub)) print(sess.run(dataMul)) print(sess.run(dataDiv)) print('sess.run(datacopy)',sess.run(datacopy))#此时已完成:将8赋值 -> data2 print('datacopy.eval()',datacopy.eval())#datacopy.eval() = sess.run(datacopy) #为10因为 datacopy = dataAdd = data1 + data2,此时data2 = 8,所以8+2 = 10 #同时这时候将10赋值 -> data2 print('tf.get_default_session().run(datacopy)',tf.get_default_session().run(datacopy)) #tf.get_default_session()获取默认session #12 = 10+2 #同时这时候将12赋值 -> data2 print('这时data2=',sess.run(data2)) print('end') #(四)tensorflow矩阵运算 #矩阵 == 数组 == N行N列 #[ [列数据] ] #[ [6,6] ]一行两列 import tensorflow as tf data1 = tf.constant([[6,6]]) data2 = tf.constant([[2], [2]]) data3 = tf.constant([[3,3]]) data4 = tf.constant([[1,2], [3,4], [5,6]]) print(data4.shape)#矩阵维度shape with tf.Session() as sess: #行和列都是从0开始 print(sess.run(data4))#打印全部 print(sess.run(data4[0]))#打印某一行 print(sess.run(data4[:,0]))#打印某一列 print(sess.run(data4[0,0]))#打印某一行某一列 #(五)矩阵的加法和乘法 import tensorflow as tf data1 = tf.constant([[6,6]]) data2 = tf.constant([[2], [2]]) data3 = tf.constant([[3,3]]) data4 = tf.constant([[1,2], [3,4], [5,6]]) #区分普通乘法和矩阵乘法 matMul = tf.matmul(data1, data2)#矩阵乘法 matMul2 = tf.multiply(data1, data2)#普通乘法 matAdd = tf.add(data1, data3)#矩阵加法 with tf.Session() as sess: print(sess.run(matMul)) print(sess.run(matAdd)) print(sess.run(matMul2))#普通乘法 1x2 2x1 = 2x2 print(sess.run([matMul, matMul2]))#一次打印多个值 print('end!') #(六)定义空矩阵、单位矩阵、填充矩阵、随机矩阵 import tensorflow as tf #方法1 mat0 = tf.constant([[0,0], [0,0]])#2x2 空矩阵 #方法2 mat00 = tf.zeros([2,2])#2x2 空矩阵 mat1 = tf.ones([2,2])#单位矩阵:全1 matt = tf.fill([2,2], 15)#用15去填充矩阵 matt2 = tf.zeros_like(matt)#与matt相同维度的全0矩阵 mat_line = tf.linspace(0.0, 2.0, 11)#将0到2之间数据分成相等10份 mat_random = tf.random_uniform([2,2], -1, 2)#-1到2之间,2x2随机矩阵 with tf.Session() as sess: print(sess.run(mat0)) print(sess.run(mat00)) print(sess.run(mat1)) print(sess.run(matt)) print(sess.run(matt2)) print(sess.run(mat_line)) print(sess.run(mat_random)) print('end!')
4.numpy入门:
#使用numpy模块 import numpy as np data1 = np.array([1,2,3,4,5])#1x5 print(data1) data2 = np.array([[1,2], [3,4]]) print(data2) print(data2.shape) data3 = np.zeros([2,2])#全0矩阵 data4 = np.ones([2,2])#全1矩阵 print(data3) print(data4) #矩阵的修改和查找 #行列都是从0开始 data2[1,1] = 5#修改最后一个元素 print(data2) print(data2[1,1]) #矩阵基本运算 data5 = np.ones([2,2]) print(data5*2)#每个元素都乘一次 print(data5/2)#每个元素都除一次 #两个矩阵间运算 data6 = np.array([[1,2], [3,4]]) print(data5+data6)#对应相加 print(data5*data6)#对应相乘
5.matplotlib入门:
#使用matplotlib模块:折线plot,饼状,柱状bar import matplotlib.pyplot as plt import numpy as np #折线图 x = np.array([1,2,3,4,5,6,7,8]) y = np.array([2,8,7,16,5,5,7,66]) plt.plot(x, y, 'b', lw=10)#1 x轴 2 y轴 3 color 4线宽度 plt.show() #柱状图 x = np.array([1,2,3,4,5,6,7,8]) y = np.array([2,8,7,16,5,5,7,66]) plt.bar(x, y, 0.9, alpha=1, color='g')#1 x轴 2 y轴 3 柱宽比例 4透明度 5颜色 plt.show()
加载全部内容