• 写在之前

    从去年開始关注python这个软件,途中间间断断看与学过一些关于python的东西。感觉python确实是一个简单优美、easy上手的脚本编程语言,众多的第三方库使得python异常的强大。能够处理很多不同的问题,同一时候它的很多开源免费的库使得python的使用也是十分的广泛。

    在科学计算、数据处理与图像领域,自己以前一直在使用matlab。感觉matlab也是一个语言优美、简单方便的编程语言,都说matlab与python在某些领域是非常类似的,确实是这样,就科学计算、数据处理上真是,matlab中很多科学计算的东西在python中基本上都有相应的库包包括进去,比方numpy,matplotlib等等,这些都是强大而又适用的。可是要说不同。那就是应用层面的了。matlab是一个商业性质的软件,正版软件也是异常的贵,个人感觉属于研究性领域的用的较多,在工作后好像一般都不怎么用这个(可能比較贵的缘故)。可是总的来说matlab相同在计算领域是强大无比的。

    Opencv是一个开源的计算机视觉库,从開始研究图像方面,并没有真正接触过它,使用的都是matlab带的图像处理库,如今看来他们非常多函数也是那么的神似。可是opencv毕竟是一个专业性的库包,里面的很多函数matlab并没有,并且从其使用面及推广程度上看,opencv确实也是那么强大。

    所以在图像领域了解opencv(不管是python版本号的还是C++版本号的)都是必要的,可是对于简单适用的学习者来说。了解了解python版的就足够了。

(一)关于python

首先关于python想说的是。单纯的官网下载的python并不大,是一个最初的python。进行一些简单的操作时能够的。可是当你进行复杂一点的时候,就须要很多第三方的安装包。比方numpy等等,这些库安装进去说起来也不是非常复杂,网上有非常多教程,可是当很多的包安装的时候,有的库包并没有你的电脑的版本号,等等还有很多因素导致你的库包安装不进去,想想还是挺麻烦的。我自己以前就是安装各种包快要崩溃了。最后索性找到了一个集成的软件,就是把经常使用的包都加进去了的python,软件是Ipython。是一个集成的科学计算软件。里面集成了很多包,并且是一个神似matlab的软件,有调试,測试。观看变量数值等等很多相同的地方,所以假设你是想研究这样面而又苦恼安装包的话,就下载个这个安装起来吧。

(二)Python下的opencv使用

本系列博客的重点是记录python下学习opencv的方法、笔记与一些想法。关于这样的类型主题。csdn上也有非常多,也有非常专业的,首推的就是以下这个博主写的一个PDF文件,确实是好东西(大感博主无私):

http://bbs.csdn.net/topics/390837851

http://pan.baidu.com/s/1jG62bhO

再有就是以下这个博主系列的博客,非常的好,能够学习:

http://blog.csdn.net/sunny2038/article/category/904451

在众多资料下,简单记录下自己的学习笔记。

(三)从头開始–读取图像

关于python下使用opencv读取图像。

首先须要导入opencv包,上面说的那个Ipython并没有opencv包,所以想使用的请先正确导入opencv包再说。至于怎么导入,先下载个opencv包,里面有关于python的opencv包,把这个想办法导进去进行了(非常easy,百度下。略过吧)。

关于Ipython的执行界面,我的是这样的(名字变成spyder了):



在读取图像之前,你得把你的做实验的图像事先放到工作文件夹下才行。读取函数是cv2.imread(),关于函数说明:

cv2.imread(‘图像名称’。’可选參数’)

可选參数决定读入图像的模式:

0:读入的为灰度图像(即使图像为彩色的)

1:读入的图像为彩色的(默认);

注意的是:即使图像在工作空间不存在,这个函数也不会报错,仅仅只是读入的结果为none。好了。读入一个图像就是这样的:

import cv2

img = cv2.imread(‘flower.jpg’)

当你的import cv2执行后没有错误了,那么就导入成功了。

(四)储存图像

储存图像函数:cv2.imwrite(‘保存的图像名’,图像,‘參数’)

正常的图像储存使用就是cv2.imwrite(‘保存的图像名’。图像)。后面一个參数默认。保存的图像名还得带类型,比方jpg,bmp等等,OpenCV眼下支持读取bmp、jpg、png、tiff等经常使用格式。第三个參数较复杂,还得分是jpg、bmp等等图像的类型不同而不同,事实上就是决定了图像储存大小,清晰度的,默认的就非常好。想细究的能够看以下。这个里面有部分介绍:

OpenCV Python教程(1、图像的加载、显示和保存)

那么在得到一副图像想储存,比方就直接:cv2.imwrite(‘good_gray.tif’,img)

(五)图像显示

Opencv自带显示图像函数。可是较为复杂并且个人感觉不稳定。这里在介绍一种显示方法,就是使用库包matplotlib(这个库包Ipython自带)来显示图像。

首先是opencv自带函数显示,一般要显示一个图像。在图像有了之后,然后直接以下函数一起组合使用:

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

函数cv2.imshow的第一个參数是名字,第二个是要显示的图。然而为了让图像在显示屏上停留才有了以下两句话一起使用。因为系统(32位与64位)的不一样,有的时候会出现显示不出来,个人感觉opencv本身c语言写的。存在着系统上的差异,并且这样的显示方法无法保存图像、调整图像大小等等,这里介绍还有一种经常使用且强大的显示图像方法,使用matplotlib库包中的pyplot子包来显示,这样的显示方法不但稳定。还能够调整大小、保存显示的图像等等。那么一般它的用法例如以下:

import cv2
from matplotlib import pyplot as plt
img = cv2.imread('good.jpg',0);#打开为灰度图像
plt.imshow(img, 'gray') #必须规定为显示的为什么图像
plt.xticks([]),plt.yticks([]) #隐藏坐标线
plt.show() #显示出来。不要也能够,可是一般都要了

以下是显示的上述图,能够看到会在一个新的界面显示出来:

Python下opencv使用笔记(一)(图像简单读取、显示与储存)的更多相关文章

  1. Python下opencv使用笔记(图像频域滤波与傅里叶变换)

    Python下opencv使用笔记(图像频域滤波与傅里叶变换) 转载一只程序喵 最后发布于2018-04-06 19:07:26 阅读数 1654  收藏 展开 本文转载自  https://blog ...

  2. Python下opencv使用笔记(二)(简单几何图像绘制)

    简单几何图像一般包含点.直线.矩阵.圆.椭圆.多边形等等.首先认识一下opencv对像素点的定义. 图像的一个像素点有1或者3个值.对灰度图像有一个灰度值,对彩色图像有3个值组成一个像素值.他们表现出 ...

  3. Python下opencv使用笔记(十)(图像频域滤波与傅里叶变换)

    前面以前介绍过空间域滤波,空间域滤波就是用各种模板直接与图像进行卷积运算,实现对图像的处理,这个方案直接对图像空间操作,操作简单.所以也是空间域滤波. 频域滤波说究竟终于可能是和空间域滤波实现相同的功 ...

  4. Python下opencv使用笔记(七)(图像梯度与边缘检測)

    梯度简单来说就是求导,在图像上表现出来的就是提取图像的边缘(无论是横向的.纵向的.斜方向的等等),所须要的无非也是一个核模板.模板的不同结果也不同.所以能够看到,全部的这些个算子函数,归结究竟都能够用 ...

  5. Python下opencv使用笔记(图像的平滑与滤波)

    对于图形的平滑与滤波,但从滤波角度来讲,一般主要的目的都是为了实现对图像噪声的消除,增强图像的效果. 对于2D图像可以进行低通或者高通滤波操作 低通滤波(LPF):有利于去噪,模糊图像 高通滤波(HP ...

  6. Python下opencv使用笔记(十一)(详解hough变换检测直线与圆)

    http://blog.csdn.net/on2way/article/details/47028969 http://blog.csdn.net/mokeding/article/details/1 ...

  7. 在python3下使用OpenCV 抓取摄像头图像并实时显示3色直方图

    以下代码为在Python3环境下利用OpenCV 抓取摄像头的实时图像, 通过OpenCV的 calHist函数计算直方图, 并显示在3个不同窗口中. import cv2 import numpy ...

  8. opencv学习笔记(七)---图像金字塔

    图像金字塔指的是同一图像不同分辨率的子图的集合,有向下取样金字塔,向上取样金字塔,拉普拉斯金字塔....它是图像多尺度表达的一种,最主要的是用于图像的分割 向下取样金字塔指高分辨率图像向低分辨率图像的 ...

  9. OpenCV:Python下OpenCV安装和入门最强详细攻略

    一.关于OpenCV简介       OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效— ...

随机推荐

  1. 机器学习规则:ML工程最佳实践----rules_of_ml section 1【翻译】

    作者:黄永刚 机器学习规则:ML工程最佳实践 本文旨在指引具有机器学习基础知识的工程师等人,更好的从机器学习的实践中收益.介绍一些应用机器学习需要遵循的规则,类似于Google C++ 风格指南等流行 ...

  2. Adobe 2015 CC update (Windows/Mac OS) 独立升级包下载 Adobe Photoshop CC (Windows 32bit)

    Adobe CC 2015 Product Updates/Downloads for Windows ** = To access these updates, please first follo ...

  3. P3227 [HNOI2013]切糕

    题目描述 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B.出于美观考虑,小 A 希望切面能尽量光滑且和谐.于是她找到你,希望你能帮她找出最好的切割方案 ...

  4. PHP+MySQL登录注册,完整版,详细注释

    纯手写打造. 下载地址:http://download.csdn.net/detail/qq_33599520/9779970 项目结构: 下面是代码: <!DOCTYPE html> & ...

  5. python对MySQL进行添加修改删除以及字符串的操作

    # coding=UTF-8 import MySQLdb def dbDperate(sql,param): "定义数据库的添加,修改和删除操作" #获取数据库的连接对象 con ...

  6. 为什么越来越少的开源项目使用 GPL 协议

    原文出处: opensource   译文出处:oschina/王练    前段时间,我在 RedMonk 上看到了一篇来自 Stephen O’Grady 的有趣推文,介绍了开源许可证目前的状态,以 ...

  7. python(1)处理图像

    一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此, ...

  8. ArcGIS api for javascript——设置自定义范围和空间参考

    描述 这个示例展示了在创建地图时如果定义一个自定义的范围和空间参考. 在 ArcGIS JavaScript API的1.0和1.1版本,任何要使用的地图服务图层都需要和地图的空间参考一致.1.2版本 ...

  9. UITextView自己定义键盘和系统键盘

    UITextView有inputView 和 inputAccessoryView 两个属性,都指定了对应的视图. inputAccessoryView 对象显示在 inputView 对象的上面.与 ...

  10. 《AndroidStudio每日一贴》5. 怎样高速查看某个方法/注解的定义?

    操作方法: 使用快捷键 option + space 或 command + y 举个样例: 如以下的样例,我在输入@O的时候会出现代码补全列表,这个时候我想查看列表中项目的定义能够使用快捷键 opt ...