Alg1:图像数据格式之间相互转换.png to .jpg(其他的请举一反三)

 import cv2
import glob def png2jpg():
images = glob.glob('*.png') # 获取当前路径下的所有后缀名为.png的文件
count = 0 # 不断累加,提供输出图像名称
for i in images:
print('Picture %d is Processing...' % count)
I = cv2.imread(i) # 读取图像
cv2.imwrite(str(count)+'.jpg',I) # 写入图像
count += 1

将程序封装成脚本方便调用,将上述代码封装成.py文件,放到对应需要修改的文件夹即可完成所有图片的格式转换!png2jpg.py

 Alg2:重新设置图像大小.py直接双击运行即可cv2.resize()

import cv2
import glob
images = glob.glob('*.png') # 获取当前路径下的所有后缀名为.png的文件
print(images)
zoom_coff = 0.8 # 系数,用来计算图像结果大小
for i in images:
I = cv2.imread(i)
w, h = I.shape[:2]
print(w,h)
Res = cv2.resize(I,(int(h*zoom_coff), int(w*zoom_coff)))
cv2.imwrite(i,Res)

Alg2:读取MATLAB输出的.mat文件

from scipy.io import loadmat
path='C:\\Users\\miao.ma\\Desktop\\data\\Ref\\MATLAB_Calculate\\calibrationSession.mat'
mat = loadmat(path)
print(mat)

Alg3:启动设备Camera进行视频捕获&按键监测捕获照片

 import cv2
import threading cap = cv2.VideoCapture(0)
while not cap.isOpened(): # 检查摄像头是否打开成功
time.sleep(100)
print('Camera is Initialize...') width = int(cap.get(3)) # 读取摄像头分辨率参数
height = int(cap.get(4)) frame = np.zeros((width,height,3),dtype=np.uint8) # 创建图像模板 Key_val = 0 # 保存键值
process_flag = True # 任务切换 def Keybo_Moni(): # 按键测试函数
count = 0
while True:
global Key_val, frame, process_flag, cap
if Key_val == ord('r'):
Key_val= 0
cv2.imwrite('ResPic' + str(count) + '.jpg', frame) # 保存图像
count += 1
print('Get new pic %d' % count)
if Key_val == ord('q'):
cap.release()
cv2.destroyAllWindows()
print('Pic Sample Finished!')
process_flag = False
break try: Keybo_Moni_Thread = threading.Thread(target=Keybo_Moni, name='Keyboard-Thread') # 创建键盘监控线程
Keybo_Moni_Thread.start() # 启动键盘监测线程
except:
print('Error:uqnable to start the thread!') while process_flag:
ret, frame = cap.read() # 读取视频帧
while not ret: # 确保读取到了正确的数据,若frame为空,使用imshow将会报错
ret, frame = cap.read()
print('Error: Camera wrong!')
cv2.imshow('Video_Show', frame) # 显示图像
Key_val = cv2.waitKey(1) # 获取键值,不加此句,无法运行程序!(Ref:https://www.cnblogs.com/kissfu/p/3608016.html) Keybo_Moni_Thread.join() # 在这里等待子线程结束

上述程序中,使用了多线程的方式,在按键监测和图像视频帧输出的同时,我们需要保证能够实时的监测到键盘,必须采用多线程,事实上单一线程也能完成相应的工作,但单一线程在例如算法处理等操作的时间上存在一定限制,处理时间过长将导致视频帧率的下降!所以采用多线程是个好的办法!采样和处理分开,再加上相应的缓冲就能很好的完成数据速率的匹配了.

Alg4:人脸识别算法

import numpy as np
import cv2 face_cascade = cv2.CascadeClassifier('/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
while True:
ret,img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('img',img)
if cv2.waitKey(1) &0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()

原理介绍:

Keep Going~

基于Python & Opencv 图像-视频-处理算法的更多相关文章

  1. 搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台

    搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台 By 子敬叔叔 最近在学习麦好的<机器学习实践指南案例应用解析第二版>,在安装学习环境的时候 ...

  2. Python实现图像直方图均衡化算法

    title: "Python实现图像直方图均衡化算法" date: 2018-06-12T17:10:48+08:00 tags: [""] categorie ...

  3. Python OpenCV 图像相识度对比

    强大的openCV能做什么我就不啰嗦,你能想到的一切图像+视频处理. 这里,我们说说openCV的图像相似度对比, 嗯,说好听一点那叫图像识别,但严格讲, 图像识别是在一个图片中进行类聚处理,比如图片 ...

  4. 基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释

    先来普及一下概念, 计算机对人脸是如何识别的呢? 或者说图像是如何识别的.主要是获取单张图片的特征值记录了特征值以后,如果下一张图片来了以后两张图片特征值进行对比,如果相似度很高那么计算机就认定这两个 ...

  5. python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框

    最近因为要实现模板匹配,需要在视频中选中一个目标,然后框出(即作为模板),对其利用模板匹配的方法进行检测.于是需要首先选出视频中的一帧,但是在利用摄像头读视频的过程中我唯一能想到的方法就是: 1.在视 ...

  6. 万张PubFig人脸数据实现基于python+OpenCV的人脸特征定位程序(1)

    在最近刷今日头条以及其他媒体软件时,经常会发现一些AI换脸的视频,于是我想,可不可以自己实现一个可以进行人脸识别的软件程序.我的具体流程是先配合python网络爬虫先进行万张PubFig人脸公共图片的 ...

  7. Python opencv提取视频中的图片

    作者:R语言和Python学堂链接:https://www.jianshu.com/p/e3c04d4fb5f3 这个函数就是本文要介绍的video2frames()函数,功能就是从视频中提取图片,名 ...

  8. python+opencv 图像预处理

    一 python 生成随机字符串序列+ 写入到图片上 from PIL import Image,ImageDraw,ImageFont import numpy as np import rando ...

  9. python Opencv图像基础操作

    读取并显示图像 如果读取图像首先要导入OpenCV包,方法为: import cv2 读取并显示图像 img = cv2.imread("C:\test1.jpg") OpenCV ...

随机推荐

  1. Oracle 查看链接数、创建索引等的DDL语句

    select count(*),machine from v$session group by machine 今天打算将一个数据库的索引在另一个测试库上重新创建一遍,研究了一下. set pages ...

  2. Decision tree(决策树)算法初探

    0. 算法概述 决策树(decision tree)是一种基本的分类与回归方法.决策树模型呈树形结构(二分类思想的算法模型往往都是树形结构) 0x1:决策树模型的不同角度理解 在分类问题中,表示基于特 ...

  3. Java多线程:向线程传递参数的三种方法

    在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程 ...

  4. SpringBoot系列: url重定向和转发

    Web UI项目中, 很多 Spring controller 视图函数直接返回 html 页面, 还有一些视图函数是要重定向或转发到其他的 url 上. redirect 和 forward的区别: ...

  5. John von Neumann和Ulam

    John von Neumann和Ulam是好朋友,两人经常在一起喝酒.旅行.谈女人.有一次诺伊曼认出身边的一位女士,他们交谈了几句.随后他给Ulam介绍那是他的一位老朋友,刚刚离婚.Ulam就问:那 ...

  6. DUMP3 企业级电商项目

    [开发模式]controller - service(合法校验问题) - dao   反过来也没问题 用户模块 登录 注册 用户名验证(实时反馈前端) 忘记密码 重置密码 退出登录 更新用户信息 获取 ...

  7. day 15 - 2 内置函数练习

    内置函数练习 编写 sql 查询语句功能 文件内容: 1,Eva,22,13651054608,IT2,Vera,23,13304320533,Tearcher3,Renault,25,1333235 ...

  8. windows环境隐藏命令行窗口运行Flask项目

    Linux下可以使用nohub来使Flask项目在后台运行,而windows环境下没有nohub命令,如何让Flask项目在windows中在后台运行而不显示命令行窗口呢? 1.写一个.bat脚本来启 ...

  9. Docker入门-安装(一)

    Docker  在CentOS 7.0下安装Docker, CentOS 7.0默认使用的是firewall作为防火墙 查看防火墙状态 firewall-cmd --state 停止firewall ...

  10. MS SQL Server NULL处理

    -- 首先在用户表中插入数据如下 TRUNCATE TABLE UserInfo ; INSERT INTO userinfo(UserName,UserLogin,UserPassword,User ...