opencv处理文件、摄像头和图形用户界面

1:交互式cv应用程序的输入输出可能是图像文件、视频文件和原始字节等,opencv的imread()和imwrite()函数支持各种静态图像文件。

 1.1   像素都是一个数值,但不同格式表示像素的方式不同,下面介绍三种表示像素的方法

   ①:创建一个黑色的正方形图像:img=np.zeros((3,3),dtype=numpy.unit8)

    ②:每个像素由8位整数来表示,即每个像素的取值范围是0~255

     ③:img=cv2.cvtColor(img,cv2.COLOR_GRAY2BGR),这样就将①中的单通道一元组表示成了每个像素是三通道三元组形式

 1.2读取任意一种格式的图像并将其保存为另一种格式

import cv2

img=cv2.imread('图像文件的绝对路径.mypic.png')

cv2.imwrite('mypic.jpt',image)


grayImage=cv2.imread('mypic.png',cv2.IMREAD_GRAYSCALE)

cv2.imwrite('mypicGray.png',grayImage) (讲mypic.png转换为灰度图的方法)


1.3图像与原始字节之间的转换(因为上面我们已经说过像素由好多种表示方法,每个像素可以用8位数表示,表示0到255之间的整数,所以一个像素可以用一个字节表示)

①:灰度图像或者BGR图像转化为随机字节数组

     byteArray = bytearray(image) (这里利用bytearray将图片转换为自己)

②:随机字节数组转换为灰度图像或者BGR图像

import  cv2

import numpy

import os

randomByteArray=bytearray(os.urandom(120000)) (os.urandom()函数可以随机生成原始字节)

flatNumpyArray=numpy.array(randomByteArray)  (把字节转换为numpy数组)

grayImage=flatNumpyArray.reshape(300,400)   (转换为300*400大小的灰度图像)

cv2.imwrite('randomGray.png',grayImage)

bgrImage=flatNumpyArray.reshape(100,400,3)   (转换为三通道的300*400的bgr图像)

cv2.imwrite('RandomColor.png',bgrImage)


1.4视频文件的读/写

opencv提供了VideoCapture类和VideoWrite类来支持各种格式的视频文件,利用VideoCapture类通过read()函数来获得新的帧,每帧都是一副BGR格式的图像,同样可以将

一副BGR图像传递给VideoWrite()函数,VideoWrite函数利用write()函数将图像添加到指定文件中

import cv2

videoCapture=cv2.VideoCapture('MyAVI.avi')

fps=videoCapture.get(cv2.CAP_PROP_FPS)

size=(int(videoCapture.get(cv2.CAP_PROP_FPS_WIDTH)),

          int(videoCapture.get(cv2.CAP_PROP_FPS_HEIGHT)))

......

帧速率和帧大小必须要指定,因为我们要从另一个视频文件复制视频帧,这些属性可以通过VideoCapture类的get()函数获得

 

1.5捕获摄像头的帧

为了针对摄像头创建合适的VideoWriter类,要对帧速率做出假设,要么使用计时器来测量,,VideoCapture类所使用的终端不支持所查询的这个属性,会返回0


  

 


   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值