首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python两个函数线程

Python两个函数线程
EN

Stack Overflow用户
提问于 2017-02-09 20:26:48
回答 1查看 209关注 0票数 1

我想线程两个函数,第一个函数流式传输视频并将帧传递给第二个函数,第二个函数读取带有光学字符识别的帧并将帧转换为文本。如何将帧从第一个线程函数传递到第二个线程函数?

我已经做了什么,第一个函数将视频帧保存到本地文件'frame.jpg‘,同时使用第二个函数从'frame.jpg’读取。是否可以将视频帧定义为全局变量并传递给读取函数?

代码语言:javascript
复制
import cv2
import pytesseract
from multiprocessing import Process

def video_straming():       #Video streaming function, First Function
    vc = cv2.VideoCapture(0)
    cv2.namedWindow("preview")

    if vc.isOpened():
        rval, frame = vc.read()
    else:
        rval = False

    while rval:
        rval, frame = vc.read()
        cv2.imwrite('frame.jpg',frame)
        key = cv2.waitKey(20)
        if key == 27: # exit on ESC
            break
    cv2.destroyWindow("preview")

def reading():  #Reading from frame.jpg function, Second Function
    while:
        frame = cv2.imread('frame.jpg')
        read = Image.fromarray(frame)
        read = pytesseract.image_to_string(read)
        if len(read) > 80:
            break

if __name__ == '__main__':
    video_stream = Process(target=video_streaming)
    video_stream.start()
    frame_read = Process(target=reading)
    frame_read.start()
    video_stream.join()
    frame_read.join()
EN

回答 1

Stack Overflow用户

发布于 2018-08-06 04:04:57

希望这个答案仍然有一定的用处。

我使用multiprocessing.Pipe()将视频帧从一个进程传递到另一个进程,使用cv2.VideoCapture()捕获帧并将每个图像写入管道。

导入多进程

Multiprocessing.set_start_method(‘产卵’)

video_outfrompipe,video_intopipe = multiprocessing.Pipe()

vs = multiprocessing.Process(target=VideoSource,args=(video_intopipe))

vs.start()

vc = multiprocessing.Process(target=VideoConsumer,args=(video_outfrompipe))

vc.start()

vs.join()

vc.join()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42136714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档