(1)打开Anaconda Prompt,将网址替换为清华镜像,这样下载各种依赖会快一些:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
(2)打开Anaconda Navigator,创建一个运行环境,名称为tensorflow36,并安装tensorflow和opencv
(1)在Navigator中Home页面里运行notebook
(2)图片的读取与展示
cv2.imread()
用于图片读取,它接受2个参数。参数1为文件名,参数2为图片读取类型,0为读取成灰度图,1为读取成彩色图cv2.imshow()
用于显示图片,它接受2个参数。参数1为窗体名称,参数2为读取图片的原始数据cv2.waitKey(0)
用于程序暂停,要显示图片必须运行这行代码
import cv2
img = cv2.imread('image0.jpg',1)
cv2.imshow('image',img)
cv2.waitKey(0)
运行结果
(3)图片的写入
cv2.imwrite()
该方法接受3个参数。参数1为文件名,参数2为图片原始数据,参数三为压缩质量,不同的图片格式拥有不同的数值范围,对于jpg来说可选质量0-100,对于png来说压缩范围为0-9
import cv2
img = cv2.imread('image0.jpg',1)
#完成图片的写入功能
cv2.imwrite('image1.jpg',img,[cv2.IMWRITE_JPEG_QUALITY,50])
cv2.imwrite('image1.png',img,[cv2.IMWRITE_PNG_COMPRESSION,0])
#jpg 0 压缩比高 png 0 压缩比低
#jpg 压缩范围 0-100 png 压缩范围 0-9
运行结果
(4)像素操作基本概念
(b,g,r) = img[0,0]
用元组来存储一个像素的颜色(b,g,r) = img[100,100] #img[]是一个矩阵结构,读取出的数据以元组储存,左上角为起点
print(b,g,r) #openCV读取颜色为bgr
for i in range(1,100):
for j in range(1,100):
img[100+i,100+j] = (255,0,0)
cv2.imshow('image2',img)
cv2.waitKey(0)
运行结果
(5)tensorflow基础知识
import tensorflow as tf
data1 = tf.constant(2,dtype=tf.int32) #定义常量
data2 = tf.Variable(10,name='var') #变量
print(data1)#直接打印的为张量
print(data2)
sess = tf.Session() #tensorflow中所有的操作要通过会话变量来进行
print(sess.run(data1))
init = tf.global_variables_initializer() #如果在图中定义了变量一定要调用init为变量初始化
sess.run(init)
print(sess.run(data2))
sess.close()
#使用with方式可以不用关闭会话
'''
init = tf.global_variables_initializer()
sess = tf.Session()
with sess:
sess.run(init)
print(sess.run(data2))
'''
运行结果
(6)Tensorflow四则运算
tf.add()
加法 tf.substract()
减法 tf.multiply()
乘法 tf.divide()
除法
import tensorflow as tf
data1 = tf.constant(6)
data2 = tf.Variable(2)
dataAdd = tf.add(data1,data2)
dataCopy = tf.assign(data2,dataAdd)#将结果拷贝到data2中
dataMul = tf.multiply(data1,data2)
dataSub = tf.subtract(data1,data2)
dataDiv = tf.divide(data1,data2)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run(dataAdd))
print(sess.run(dataMul))
print(sess.run(dataSub))
print(sess.run(dataDiv))
print(sess.run(dataCopy))
print(dataCopy.eval())
print(tf.get_default_session().run(dataCopy))
print('end')
运行结果
使用占位符方式
import tensorflow as tf
data1 = tf.placeholder(tf.float32)
data2 = tf.placeholder(tf.float32)
dataAdd = tf.add(data1,data2)
with tf.Session() as sess:
print(sess.run(dataAdd,feed_dict={data1:2,data2:6}))
print('end')
(7)tensorflow矩阵
通过[ [data1,data2,... ] ]创建,最外层的[ ]只代表一个数组,里面的[ ]代表一行,内层的数据个数代表了几列,例如[[1,2],[3,4]]
代表一个2*2的矩阵
import tensorflow as tf
data1 = tf.constant([[6,6]])#创建一个1x2的矩阵
data2 = tf.constant([[2],[2]])#创建一个2x1的矩阵
data3 = tf.constant([[1,2],[3,4],[5,6]])#3x2矩阵
print(data3.shape)
with tf.Session() as sess:
print(sess.run(data3))
print(sess.run(data3[0]))#打印第一行
print(sess.run(data3[:,0]))#打印第一列
print(sess.run(data3[0,1]))#第一行第二列
运行结果
到这就结束了什么都不会~~
作者:lhdoeo
链接:https://www.jianshu.com/p/286b7f57c7b9