openCV和Tensorflow起步

1.配置开发环境Anaconda

(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

2.Hello World

(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)像素操作基本概念

  • 颜色深度:按8bit举例,就是用8位存储一个颜色的值,8bit的每个颜色通道的取值范围是0-255
  • 图片大小:640x480即水平、竖直方向上有640、480个像素;640x480x3即图片占用的空间(8bit图片)
  • 图片格式:对于png图片来说,它采用的都是无损压缩方式,比jpg多出一个alpha颜色通道,用来存储透明度
  • 颜色通道:opencv读取的图片颜色通道是按bgr来排列的(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基础知识

  • 使用图 (graph) 来表示计算任务
  • 在被称之为 会话 (Session) 的上下文 (context) 中执行图
  • 使用张量(tensor) 表示数据
  • 通过变量 (Variable) 维护状态
  • 使用 feed 和 fetch 可以为任意的操作赋值或者从其中获取数据
  1. 在Tensorflow计算图(graph)中,操作间传递的数据都是 tensor。 可以把 TensorFlow中tensor 看作是一个 n 维的数组或列表。 一个 tensor 包含一个静态类型 rank,和 一个 shape。
  2. 图中的节点被称之为 op (operation)。 一个 op 获得 0 个或多个 Tensor,执行计算, 产生 0 个或多个 Tensor。每个 Tensor 是一个类型化的多维数组。例如,你可以将一小组图像集表示为一个四维浮点数数组 [batch, height, width, channels]。
  3. 一个图描述了计算的过程。为了进行计算,图必须在会话里被启动。会话将图的 op 分发到诸如 CPU 或 GPU 之类的 设备 上,同时提供执行 op 的方法。这些方法执行后, 将产生的 tensor 返回。
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]))#第一行第二列

运行结果

到这就结束了什么都不会~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 一、导出数据库里面的表(结构及数据) 1.从数据库中找到你想要导出的表,右击弹出选框,选择 ‘转储SQL文件’,点...
    大刀刻小字阅读 1,048评论 0 0
  • 2018年2月23日 星期五 天气晴 我妈妈 我妈妈个子有些矮,身体胖胖的...
    飞翔语阅读 162评论 0 1
  • 你处对象了 还不算,不过也差不多了。 仅以此集祭奠三年光阴一生春梦 ...
    裸泪无痕阅读 221评论 0 0