美文网首页
01_Opencv图像处理入门

01_Opencv图像处理入门

作者: NWPU_HaiboWu | 来源:发表于2019-07-21 21:38 被阅读0次

    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]]
    

    小结

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

    相关文章

      网友评论

          本文标题:01_Opencv图像处理入门

          本文链接:https://www.haomeiwen.com/subject/qkpahctx.html