01_Opencv图像处理入门

6月28号回家,玩、开始有写博客的想法、玩、看完Python基础,终于终于终于开始写Deep Learning的部分了

一、环境搭建

因为没啥基础,我这里用的是最low的开发平台
win10+Anaconda 3+Python 3.6+OpenCV 3.4.2+TensorFlow 1.13
整个搭建过程还算是比较简单的,唯一可能出现的问题就是网速很慢,网上有很多教程,自行百度,我就简单介绍一下安装过程

  • 下载安装Anaconda,官网上会提供3.6和2.7两个版本,自行选择

  • 安装完成打开,Anaconda Navigator创建一个新的环境,点击左下角create如图


    创建环境
  • 创建完成后,需要安装OpenCV和TensorFlow两个库


    OpenCV安装

    TensorFlow安装
  • 最后在搭建的环境下安装Notebook


    安装Notebook

二、入门基础

1. 使用OpenCV实现图像的读、写、操作

import cv2  #引入OpenCV包
img=cv2.imread('image0.jpg',1)  #读取图片,第一个参数是文件名,第二个参数0表示读取灰色图像,1表示读取彩色图像
## 1.写入对象 2.源图像 3.写入图像质量
cv2.imwrite('imageTest.jpg',img,[cv2.IMWRITE_JPEG_QUALITY,50])
#1M 100k 10k 0-100 有损压缩
#-----------------------------------------------------------------------
(b,g,r)=img[100,100]  #利用元组读取对应像素点的数据
print (b,g,r)
# 修改数据
for i in range(1,100):  
    img[i,100]=(255,0,0)

cv2.imshow('image',img) #图片展示,1.展示图像名称 2.图像源
cv2.waitKey(0)  #等待,与c语言的控制台显示一样意思

2. Numpy和Matplot的基本用法
严格意义上来说还需要掌握Pandas,这三个是数据处理必要的小技能了,

import numpy as np
import matplotlib.pyplot as plt

你大概需要掌握这些:

  • Numpy创建数组
    1.使用np.array()由python list创建
    2.使用np的routines函数创建
    2.1 np.ones()
    2.2 zeros()
    2.3 np.full()
    2.4 np.eye()
    2.5 np.linspace()
    2.6 arange()
    2.7 randint()
    2.8 randn() 正态分布
    2.9 normal() 正态分布
    2.10 random_sample() 生成0到1的随机数
  • Numpy查看数组属性
    1.数组元素个数
    2.数组形状
    3.数组维度
    4.数组元素类型
  • 数组的基本操作
    1.索引
    2.切片
    3.变形
    4.级联
    5.切分
  • Numpy计算
    条件运算
    统计运算
    数组运算
    矩阵运算
    矩阵的广播
  1. 认识Matploblib
    1.1 Figure
    1.2 Axes
    1.3 Multiple Axes
  1. 基本绘图
    2.1 线
    2.2 散点图
    2.3 条形图
    2.4 直方图
    2.5 饼图
  1. 图信息修改
    3.1 区间上下限
    3.2 图例说明
    3.3 区间分段
    3.4 布局
    3.5 轴相关

其实我也不是很会,起码做到心里有数吧,我放上几个参考链接:
Numpy基本用法
菜鸟教程 Numpy使用方法
matplot的基本用法
3. TensorFlow的基本概念与用法

Tensorflow是一种计算图模型,即用图的形式来表示运算过程的一种模型。Tensorflow程序一般分为图的构建和图的执行两个阶段。

图的构建阶段也称为图的定义阶段:在图模型中定义所需的运算,每次运算的的结果以及原始的输入数据都可称为一个节点
图模型的构建阶段:只在图中定义所需要的运算,而没有去执行运算

这里通过代码的形式对TensorFlow的基本用法进行介绍:
源码:主要参考的是我学习的慕课网的人工智能图像处理入门课程

  • 常量与变量的定义以及Session的两种运行方式
import tensorflow as tf
#定义一个常量
data1 = tf.constant(2,dtype=tf.int32)
#声明一个变量
data2 = tf.Variable(10,name='var')
print(data1)
print(data2)
'''
两种方式的主要差别在于,后一种不需要调用.close()方法
sess = tf.Session()
print(sess.run(data1))
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(data2))
sess.close()
# 本质 tf = tensor + 计算图
# tensor 数据
# op 
# graphs 数据操作
# session
'''
init = tf.global_variables_initializer()
sess = tf.Session()
with sess:
    sess.run(init)
    print(sess.run(data2))
#--------------------------------------
Tensor("Const_4:0", shape=(), dtype=int32)
<tf.Variable 'var_4:0' shape=() dtype=int32_ref>
2
10
  • 四则运算
import tensorflow as tf
data1 = tf.constant(6)
data2 = tf.Variable(2)
dataAdd = tf.add(data1,data2)
dataCopy = tf.assign(data2,dataAdd)# 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)',sess.run(dataCopy))#8->data2
    print('dataCopy.eval()',dataCopy.eval())#8+6->14->data = 14
    print('tf.get_default_session()',tf.get_default_session().run(dataCopy))
print('end!')
#-----------------------------------------------------------
8
12
4
3.0
sess.run(dataCopy) 8
dataCopy.eval() 14
tf.get_default_session() 20
end!
  • 矩阵基础
#placehold
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:6,data2:2}))
    # 1 dataAdd 2 data (feed_dict = {1:6,2:2})
print('end!')
#----------------------------
8.0
end!
#-------------------------------
#类比 数组 M行N列 []   内部[]  [里面 列数据]   [] 中括号整体 行数
#[[6,6]] [[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)# 维度
with tf.Session() as sess:
    print(sess.run(data4)) #打印整体
    print(sess.run(data4[0]))# 打印某一行
    print(sess.run(data4[:,0]))#MN 列
    print(sess.run(data4[0,1]))# 1 1  MN = 0 32 = M012 N01
#-----------------------------------------------------
(3, 2)
[[1 2]
 [3 4]
 [5 6]]
[1 2]
[1 3 5]
2
import tensorflow as tf
mat0 = tf.constant([[0,0,0],[0,0,0]])
mat1 = tf.zeros([2,3])
mat2 = tf.ones([3,2])
mat3 = tf.fill([2,3],15)
with tf.Session() as sess:
    #print(sess.run(mat0))
    #print(sess.run(mat1))
    #print(sess.run(mat2))
    print(sess.run(mat3))
#-----------------------------------------
8.0
end!
#---------------------------------------
#---------------------------------------
import tensorflow as tf
mat1 = tf.constant([[2],[3],[4]])
mat2 = tf.zeros_like(mat1)
mat3 = tf.linspace(0.0,2.0,11)
mat4 = tf.random_uniform([2,3],-1,2)
with tf.Session() as sess:
    print(sess.run(mat2))
    print(sess.run(mat3))
    print(sess.run(mat4))
#-------------------------------------------
[[0]
 [0]
 [0]]
[ 0.          0.2         0.40000001  0.60000002  0.80000001  1.
  1.20000005  1.39999998  1.60000002  1.80000007  2.        ]
[[ -1.66177750e-04   7.87446260e-01  -4.10951853e-01]
 [ -9.58950400e-01   1.97116375e-01  -2.69421697e-01]]

小结

也算是正式开始研究生生活,我总感觉自己能潇洒的好日子不多了。希望能坚持下去,周更吧!

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

推荐阅读更多精彩内容