《入门图像处理》(一)计算机视觉入门

主要分为2个部分:opencv入门+tensorflow入门、穿插numpy+matplotlib入门知识

1.安装tensorflow1.10和opencv3.3.1:

安装tensorflow和opencv:

pip install --upgrade --ignore-installed tensorflow==1.10 -i https://pypi.douban.com/simple/
pip install python-opencv -i https://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()

原文地址:https://www.cnblogs.com/Whgy/p/12333809.html

时间: 2024-11-08 20:19:52

《入门图像处理》(一)计算机视觉入门的相关文章

影视动画 Premiere视频教程 AE CS5专业入门教程 绘声绘影X6入门提高 3DS MAX三维动画教程

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut

图像处理与计算机视觉开源软件库及学习站点

1:OpenCv(计算机视觉必学的库,个人觉得其作用相当强悍) http://opencv.willowgarage.com/wiki/ 2:CVpaper 主页上推荐的开源视觉算法库,最全的了,也很新,强烈推荐大家去看看 http://www.cvpapers.com/rr.html 3:cmu的图像处理和计算机视觉软件库,很全,但有点老了,但都很经典,资源很丰富 http://www.cs.cmu.edu/~cil/v-source.html 4:机器学习Machine Learning 课

图像处理与计算机视觉基础,经典以及最近发展

*************************************************************************************************************** 在这里,我特别声明:本文章的源作者是   杨晓冬  (个人邮箱:[email protected]).原文的链接是 http://www.iask.sina.com.cn/u/2252291285/ish.版权归 杨晓冬 朋友所有. 我非常感谢原作者辛勤地编写本文章,并愿意共

图像处理与计算机视觉:图像处理与分析

1. Bilateral Filter Bilateral Filter俗称双边滤波器是一种简单实用的具有保持边缘作用的平缓滤波器,由Tomasi等在1998年提出.它现在已经发挥着重大作用,尤其是在HDR领域. [1998 ICCV] BilateralFiltering for Gray and Color Images [2008 TIP] AdaptiveBilateral Filter for Sharpness Enhancement and Noise Removal 2. Col

OpenGL入门【1 快速入门】

www.qdmm.com/BookReader/1845423,31051137.aspx www.qdmm.com/BookReader/1845423,31073665.aspx www.qdmm.com/BookReader/1845423,31088923.aspx www.qdmm.com/BookReader/1845423,31104070.aspx www.qdmm.com/BookReader/1845423,31114804.aspx www.qdmm.com/BookRea

图像处理与计算机视觉开源软件库及学习网站

1:OpenCv(计算机视觉必学的库,个人认为其作用相当强悍) http://opencv.willowgarage.com/wiki/ 2:CVpaper 主页上推荐的开源视觉算法库,最全的了,也非常新,强烈推荐大家去看看 http://www.cvpapers.com/rr.html 3:cmu的图像处理和计算机视觉软件库,非常全,但有点老了,但都很经典,资源非常丰富 http://www.cs.cmu.edu/~cil/v-source.html 4:机器学习Machine Learnin

影视动画Premiere视频教程 AE CS5专业入门教程 绘声绘影X6入门提高 3DS MAX三维动画教程

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut

图像处理与计算机视觉基础,经典以及最近发展--转载

*************************************************************************************************************** 在这里,我特别声明:本文章的源作者是   杨晓冬  (个人邮箱:[email protected]).原文的链接是http://www.iask.sina.com.cn/u/2252291285/ish.版权归 杨晓冬 朋友所有. 我非常感谢原作者辛勤地编写本文章,并愿意共享

图像处理和计算机视觉中的经典论文

图像处理和计算机视觉中的经典论文 转自:http://www.cnblogs.com/moondark/archive/2012/04/20/2459594.html 感谢水木上同领域的同学分享,有了他的整理,让我很方便的获得了CV方面相关的经典论文,我也顺便整理一下,把pdf中的文字贴到网页上,方便其它人更直观的获取所要内容~~~   资料的下载链接为:http://iask.sina.com.cn/u/2252291285/ish?folderid=775855 以下为该同学的整理的综述:“

Python编程从入门到实践(基础入门) 򝻨

原文: http://blog.gqylpy.com/gqy/468 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我