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~

最新文章

  1. Toad for Sqlserver
  2. ArcGIS Server 创建站点失败
  3. 菜鸟类库诞生记二:通过反射转换DataRow为对象
  4. 异步I/O编程实例,异步socket
  5. 以C#编写的Socket服务器的Android手机聊天室Demo
  6. 1047: [HAOI2007]理想的正方形 - BZOJ
  7. 用汇编语言研究C语言的全局变量、局部变量、参数、返回值放在哪里
  8. Angulajs 定时器使用
  9. WCF消息交换模式之双工通讯(Duplex)
  10. spring framework - 整体架构
  11. 《跟我学IDEA》六、插件(编码利器)
  12. [.NET Core] 简单读取 json 配置文件
  13. 深入java多线程一
  14. inception_v2版本《Rethinking the Inception Architecture for Computer Vision》(转载)
  15. Django之ORM字段和字段参数
  16. sqlite基础
  17. centos6 -> zabbix2.2升级3.0.5教程
  18. PHP类继承、接口继承关系概述
  19. ASP.NET MVC:模块化/插件式文章汇总
  20. CPP_异常处理

热门文章

  1. [APIO2007] 风铃
  2. function Language
  3. Dubbo学习笔记8:Dubbo的线程模型与线程池策略
  4. 第六节:反射(几种写法、好处和弊端、利用反射实现IOC)
  5. [再寄小读者之数学篇](2014-07-27 $H^{-1}$ 中的有界集与弱收敛极限)
  6. [物理学与PDEs]第1章第9节 Darwin 模型 9.3 Darwin 模型
  7. 导出CSV 换行问题。
  8. 【linux】基础知识
  9. 解决radio、select表单返回时,再次选择失效
  10. Linux命令行下编辑常用的快捷键