新闻动态

python环境下OPenCV处理视频流局部区域像素值

发布日期:2021-12-14 15:24 | 文章来源:脚本之家

参考我之前写的处理图片的文章:Python+OpenCV实现【图片】局部区域像素值处理(改进版)

开发环境:Python3.6.0 + OpenCV3.2.0

任务目标:摄像头采集图像(例如:480640),并对视频流每一帧(灰度图)特定矩形区域(48030)像素值进行行求和,得到一个480*1的数组,用这480个数据绘制条形图,即在逐帧采集视频流并处理后“实时”显示采集到的视频,并“实时”更新条形图。工作流程如下图:

源码:

# -*- coding:utf-8 -*-
import cv2
import numpy as np
camera = cv2.VideoCapture(0) # 参数0表示第一个摄像头
# camera = cv2.VideoCapture("test.avi") # 从文件读取视频
# 判断视频是否打开
if (camera.isOpened()):
 print 'Open'
else:
 print 'Fail to open!'
# # 测试用,查看视频size
# size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)),
#  int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# print 'size:'+repr(size)
rectangleCols = 30
while True:
 grabbed, frame_lwpCV = camera.read() # 逐帧采集视频流
 if not grabbed:
  break
 gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY) # 转灰度图
 frame_data = np.array(gray_lwpCV)  # 每一帧循环存入数组
 box_data = frame_data[:, 400:400+rectangleCols] # 取矩形目标区域
 pixel_sum = np.sum(box_data, axis=1) # 行求和q
 length = len(gray_lwpCV)
 x = range(length)
 emptyImage = np.zeros((rectangleCols*10, length*2, 3), np.uint8)
 for i in x:
  cv2.rectangle(emptyImage, (i*2, (rectangleCols-pixel_sum[i]/255)*10), ((i+1)*2, rectangleCols*10), (255, 0, 0), 1)
 emptyImage = cv2.resize(emptyImage, (320, 240))
 # 画目标区域
 lwpCV_box = cv2.rectangle(frame_lwpCV, (400, 0), (430, length), (0, 255, 0), 2)
 cv2.imshow('lwpCVWindow', frame_lwpCV) # 显示采集到的视频流
 cv2.imshow('sum', emptyImage)  # 显示画出的条形图
 key = cv2.waitKey(1) & 0xFF
 if key == ord('q'):
  break
camera.release()
cv2.destroyAllWindows()

以上就是python环境下OPenCV处理视频流局部区域像素值的详细内容,更多关于OPenCV视频流局部区域像素处理的资料请关注本站其它相关文章!

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部