Python+OpenCV图像处理(一):

  1. 读取,写入和展示图片
  2. 调用摄像头拍照
  3. 调用摄像头录制视频

1. 读取、写入和展示图片

  1. 图像读入:cv2.imread()
  • 使用函数cv2.imread() 读入图像。这幅图像应该在此程序的工作路径,或者给函数提供完整路径,第二个参数是要告诉函数应该如何读取这幅图片。
  • cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,

    这是默认参数。
  • cv2.IMREAD_GRAYSCALE:以灰度模式读入图像
  • PS:调用opencv,就算图像的路径是错的,OpenCV 也不会提醒你的,但是当你使用命

    令print img时得到的结果是None。

代码示例:

# -*- coding: utf-8 -*-
"""
Created on Mon Sep 07 19:51:58 2015 @author: Eddy_zheng
"""
import cv2
#import numpy as np # 灰度图模式加载一副彩图
img = cv2.imread('lena.jpg',0) #没有女神lena的,下方可以自行保存 @_@
  1. 图像显示:cv2.imshow()
  • 使用函数cv2.imshow() 显示图像。窗口会自动调整为图像大小。第一个参数是窗口的名字,其次才是我们的图像。你可以创建多个窗口,只要你喜欢,但是必须给他们不同的名字。

代码示例:

cv2.imshow('image',img)

cv2.waitKey(0)
"""
cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫
秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果
按下任意键,这个函数会返回按键的ASCII 码值,程序将会继续运行。如果没
有键盘输入,返回值为-1,如果我们设置这个函数的参数为0,那它将会无限
期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键a 是否
被按下,这个后面我们会接着讨论。
"""
cv2.destroyAllWindows()
"""
cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果
你想删除特定的窗口可以使用cv2.destroyWindow(),在括号内输入你想删
除的窗口名。
"""
  1. 图像保存:cv2.imwrite()

    代码示例:
# 图像名 要保存的句柄
cv2.imwrite('lena.png',img)

2. 调用摄像头拍照

代码示例:

import cv2	# 引入opencv

cap = cv2.VideoCapture(0)	# 创建摄像头句柄,打开摄像头
while(1):
# 读取摄像头资源
ret, frame = cap.read()
# 展示读取到的摄像头图像
cv2.imshow("capture", frame)
# 判断当键盘输入Q时
#waitKey()函数的功能是不断刷新图像,频率时间为delay,单位为ms。
#返回值为当前键盘按键值。
if cv2.waitKey(1) & 0xFF == ord('q'):
# 保存当前时刻的照片到指定路径
cv2.imwrite("/pant/name.jpg", frame)
break
cap.release() # 清空摄像头资源
cv2.destroyAllWindows() # 销毁窗口

3. 调用摄像头录制视频

代码示例

# coding:utf-8
import cv2
import sys reload(sys) # 重新导入sys来设置系统编码.
sys.setdefaultencoding('utf8') cap = cv2.VideoCapture(0) # 创建一个摄像头句柄,开启摄像头
cap.set(3,640)
cap.set(4,480)
cap.set(1, 10.0) # 第一个参数:视频保存路径
# 第二个参数:视频编码模式,-1表示自己选择
# 第三个参数:镜头快慢
# 第四个参数:视频窗口大小
out = cv2.VideoWriter('/path/output.avi',-1,10,(640,480)) # 展示视频窗口
while True:
# cap.read()返回了一个元组,分别用ret和frame接收
ret,frame = cap.read()
if ret == True:
frame = cv2.flip(frame, 1)
a = out.write(frame)
cv2.imshow("frame", frame)
# 接受键盘输入,若输入q则终止程序
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break # 释放资源,销毁窗口
cap.release()
out.release()
cv2.destroyAllWindows()

Python+OpenCV图像处理(一)的更多相关文章

  1. Python+OpenCV图像处理(一)——读取显示一张图片

    先在此处先声明,后面学习python+opencv图像处理时均参考这位博主的博文https://blog.csdn.net/u011321546/article/category/7495016/2? ...

  2. Python+OpenCV图像处理(十四)—— 直线检测

    简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线 ...

  3. Python+OpenCV图像处理(九)—— 模板匹配

    百度百科:模板匹配是一种最原始.最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题.它是图像处理中最基本.最常用的匹配方法.模板匹配具有自身的局限性, ...

  4. Python+OpenCV图像处理(八)—— 图像直方图

    直方图简介:图像的直方图是用来表现图像中亮度分布的直方图,给出的是图像中某个亮度或者某个范围亮度下共有几个像素.还不明白?就是统计一幅图某个亮度像素数量.比如对于灰度值12,一幅图里面有2000 个像 ...

  5. 如何让一张图片变成二值图像?python+opencv图像处理

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:张熹熹 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...

  6. Python+OpenCV图像处理(十六)—— 轮廓发现

    简介:轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果. 代码如下: import cv2 as cv import numpy as np def c ...

  7. Python+OpenCV图像处理(十五)—— 圆检测

    简介: 1.霍夫圆变换的基本原理和霍夫线变换原理类似,只是点对应的二维极径.极角空间被三维的圆心和半径空间取代.在标准霍夫圆变换中,原图像的边缘图像的任意点对应的经过这个点的所有可能圆在三维空间用圆心 ...

  8. Python+OpenCV图像处理(十三)—— Canny边缘检测

    简介: 1.Canny边缘检测算子是John F. Canny于 1986 年开发出来的一个多级边缘检测算法. 2.Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是: 好的检测- ...

  9. Python+OpenCV图像处理(十二)—— 图像梯度

    简介:图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导. Sobel算子是普通一阶差分,是基于寻找梯度强度.拉普拉斯算子(二阶差分)是基于过零点检测.通过计算梯度,设置阀值, ...

随机推荐

  1. 201521123065《java程序设计》第七周学习总结

    1. 本周学习总结 1.Iterator迭代器用于遍历集合中的元素: 2.使用迭代器删除元素一定要先指向下一个元素在删除第一个元素: 3.List可以有重复对象: Set不能有重复对象: 4.Map是 ...

  2. 201521123098 《Java程序设计》第3周学习总结

    1. 本周学习总结 1. 学习了类的创建: 2. 学会利用快捷方式完成变量的getter和setter的设定: 3. 学会了静态变量和非静态变量的区别和定义: 4. 学习了构造函数的基本编写方法. 大 ...

  3. 201521123071 《JAVA程序设计》第九周学习总结

    第九周-异常 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 此处仅部分知识点归纳 2. 书面作业 1. 常用异常,题目5-1 1.1 截图你的提交结果(出现学号) ...

  4. Oracle_Sequence如何初始化开始值

    Sequence的start with 值如何确定才能保证生成的主键不会冲突??? 我的项目中最开始数据库表主键的生成策略是 increment,但由于后来采用了集群部署的方式,出现了主键冲突的问题. ...

  5. Java实现3DES加密--及ANSI X9.8 Format标准 PIN PAN获取PIN BlOCK

    1, 采用银联ANSI X9.8标准 PIN xor PAN获取PIN BlOCK 2, 采用3Des进行加密 参考: des和3Des加密算法实现 要点:因为3DES是对称加密算法,key是24位, ...

  6. JSR303的数据校验-Hibernate Validator方式实现

    1.什么是JSR303? JSR303是java为bean数据合法性校验所提供的一个标准规范,叫做Bean Validation. Bean Validation是一个运行时的数据校验框架,在验证之后 ...

  7. FastDFS安装步骤

    FastDFS是用c语言编写的一款开源的分布式文件系统,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传.下 ...

  8. AngularJS -- Module (模块)

    点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 什么是AngularJS的模块 我们所说的模块,是你的AngularJS应用程序的一个组 ...

  9. Cookie实现登录记住密码

    Cookie实现记住登录密码,用户可以自由选择是否记住密码,或者用户之前选择记住了,但是某一次又不想记住了,需要将之前对应的Cookie删除掉 Cookie相当于map 也是键值对的形式,但是并不相同 ...

  10. java初学者(新手)应该如何选择学习教材与网站

    作者:天天向上 1.学习教材选择推荐<JAVA核心技术>,想多看点代码多练习可以找<java开发实战经典>&amp;amp;lt;img src="https ...