欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-23 14:28:17
参考我之前写的处理图片的文章:python+opencv实现【图片】局部区域像素值处理(改进版)开发环境:python3.6.0 + opencv3.2.0任务目标:摄像头采集图像(例如:480640...

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

开发环境:python3.6.0 + opencv3.2.0

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

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

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

源码:

# -*- 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视频流局部区域像素处理的资料请关注其它相关文章!