栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python-opencv——多线程之间实现图像数据共享,并对摄像头图像的获取、处理操作

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python-opencv——多线程之间实现图像数据共享,并对摄像头图像的获取、处理操作

简单粗暴,直接上代码,本质就是将每一步都分成一个进程进行管理,如果是单纯的简单图像处理,这样其实没有必要,这里适合一个甚至多个深度学习模型同时运行时,还要进行图像处理的复杂耗时任务。

主体代码
import numpy as np
import cv2
from multiprocessing import Process, Queue
import time
import os
import sys

# 进程1:从摄像头中读取图像,并将数据放入quene中
def cap_get(q):
    n = 0
    while 1:
        n= n+1
        process = 0
        ret, frame = cap.read()
        q.put([frame, data, process])

# 进程2:实时将图像显示出来
def show(q):
    while 1:
        frame, data, process = q.get()
        cv2.imshow("frame", frame)
        key = cv2.waitKey(1)
        if key & 0xFF == ord('q') or key == 27:
            cap.release()
            cv2.destroyAllWindows()
            sys.exit(0)      

# 进程3:实时将quene中的其他数据读取出进行处理
def draw(q):
    while True:
        frame, data, process = q.get()
        print(n)
        # cv2.

if __name__ == '__main__':
    cap = cv2.VideoCapture(0) 

    q = Queue()
    p = Process(target=cap_get, args=(q,))
    p2 = Process(target=show, args=(q,))
    p3 = Process(target=draw, args=(q,))
    p.start()
    p2.start()
    p3.start()
show进程

可以实时将进程cap_get中的图像获取进行展示:

draw进程

实时打印出当前的数据。

我也是全网找了半天,也没个进程间共享图像数据的文章。这个如果有帮助,希望给点个赞呀~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/350224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号