Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何加快视频处理速度:python 导入时间 进口皮卡梅拉 导入picamera.array 将numpy作为np导入 进口cv2 clahe=cv2.createCLAHE(clipLimit=8,tileGridSize=(4,4)) 使用picamera.picamera()作为摄影机: 以picamera.array.PiRGBArray(摄像头)作为流: 相机分辨率=(320240) 尽管如此: camera.capture(流,'bgr',使用\u video\u port=True) med1=cv2.medianBlur(流数组,5) med3=分类应用(med1) img1=med3 高度、宽度=med3.1形状 对于范围内的i(0,高度): 对于范围(0,宽度)内的j: 如果((img1[i,j]>=[75,75,75]).all()和(img1[i,j]=[125125125]).all()和(img1[i[140140]).all()): med3[i,j]=med3[i,j]+2 cv2.imshow('img.jpg',med3) cv2.等待键(100) 如果cv2.waitKey(1)&0xFF==ord('a'): cv2.imwrite('2015\u 01\u 05\u 43.jpg',med2) cv2.imwrite('2015\u 01\u 05\u 44.jpg',med3) 如果cv2.waitKey(1)&0xFF==ord('q'): 打破 stream.seek(0) stream.truncate()_Python_Video_Image Processing_Video Streaming - Fatal编程技术网

如何加快视频处理速度:python 导入时间 进口皮卡梅拉 导入picamera.array 将numpy作为np导入 进口cv2 clahe=cv2.createCLAHE(clipLimit=8,tileGridSize=(4,4)) 使用picamera.picamera()作为摄影机: 以picamera.array.PiRGBArray(摄像头)作为流: 相机分辨率=(320240) 尽管如此: camera.capture(流,'bgr',使用\u video\u port=True) med1=cv2.medianBlur(流数组,5) med3=分类应用(med1) img1=med3 高度、宽度=med3.1形状 对于范围内的i(0,高度): 对于范围(0,宽度)内的j: 如果((img1[i,j]>=[75,75,75]).all()和(img1[i,j]=[125125125]).all()和(img1[i[140140]).all()): med3[i,j]=med3[i,j]+2 cv2.imshow('img.jpg',med3) cv2.等待键(100) 如果cv2.waitKey(1)&0xFF==ord('a'): cv2.imwrite('2015\u 01\u 05\u 43.jpg',med2) cv2.imwrite('2015\u 01\u 05\u 44.jpg',med3) 如果cv2.waitKey(1)&0xFF==ord('q'): 打破 stream.seek(0) stream.truncate()

如何加快视频处理速度:python 导入时间 进口皮卡梅拉 导入picamera.array 将numpy作为np导入 进口cv2 clahe=cv2.createCLAHE(clipLimit=8,tileGridSize=(4,4)) 使用picamera.picamera()作为摄影机: 以picamera.array.PiRGBArray(摄像头)作为流: 相机分辨率=(320240) 尽管如此: camera.capture(流,'bgr',使用\u video\u port=True) med1=cv2.medianBlur(流数组,5) med3=分类应用(med1) img1=med3 高度、宽度=med3.1形状 对于范围内的i(0,高度): 对于范围(0,宽度)内的j: 如果((img1[i,j]>=[75,75,75]).all()和(img1[i,j]=[125125125]).all()和(img1[i[140140]).all()): med3[i,j]=med3[i,j]+2 cv2.imshow('img.jpg',med3) cv2.等待键(100) 如果cv2.waitKey(1)&0xFF==ord('a'): cv2.imwrite('2015\u 01\u 05\u 43.jpg',med2) cv2.imwrite('2015\u 01\u 05\u 44.jpg',med3) 如果cv2.waitKey(1)&0xFF==ord('q'): 打破 stream.seek(0) stream.truncate(),python,video,image-processing,video-streaming,Python,Video,Image Processing,Video Streaming,我试图为每一帧处理视频中的一些像素。该过程正在运行。但输出速度太慢。我知道这是因为它必须扫描每一帧的所有像素。有人能帮助以更快的方式执行相同的过程吗。有没有其他解决方案解决此问题。这似乎是您的第一选择应该使用一个numpy数组,使用numpy的切片和广播功能,而不是通过像素进行迭代。这基本上是相同的,但在numpy的c代码级别,这是针对这些事情进行优化的。 例如,具有第一个条件的循环可以替换为: import time import picamera import picamera.array

我试图为每一帧处理视频中的一些像素。该过程正在运行。但输出速度太慢。我知道这是因为它必须扫描每一帧的所有像素。有人能帮助以更快的方式执行相同的过程吗。有没有其他解决方案解决此问题。

这似乎是您的第一选择应该使用一个numpy数组,使用numpy的切片和广播功能,而不是通过像素进行迭代。这基本上是相同的,但在numpy的c代码级别,这是针对这些事情进行优化的。 例如,具有第一个条件的循环可以替换为:

import time
import picamera
import picamera.array
import numpy as np
import cv2

clahe = cv2.createCLAHE(clipLimit= 8, tileGridSize=(4,4))

with picamera.PiCamera() as camera:
with picamera.array.PiRGBArray(camera) as stream:
    camera.resolution = (320,240)

    while True:
        camera.capture(stream,'bgr',use_video_port=True)
        med1 = cv2.medianBlur(stream.array,5)
        med3 =clahe.apply(med1)
        img1=med3
        height, width = med3.shape
        for i in range(0,height):
            for j in range(0,width):
                if ((img1[i, j] >= [75,75,75]).all() and (img1[i, j] <[110,110,110]).all()):
                    med3[i,j]= med3[i,j]-8
                elif((img1[i, j] >= [125,125,125]).all() and (img1[i, [140,140,140]).all()):
                    med3[i,j]= med3[i,j]+2
        cv2.imshow('img.jpg',med3)
        cv2.waitKey(100)
        if cv2.waitKey(1) & 0xFF == ord('a'):
            cv2.imwrite('2015_01_05_43.jpg',med2)
            cv2.imwrite('2015_01_05_44.jpg',med3)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
        stream.seek(0)
        stream.truncate()

img1[(img1>=[75,75,75])&(img1 1.尝试超频Pi;2.尝试使用OpenCv而不是picamera 3.读取/打开摄像头流。看看是否可以用预构建、优化的numpy(例如)矩阵操作替换嵌套的
for
循环。这行代码似乎很棒。但当我使用时,它遇到了错误“操作数无法与形状[240320](3)一起广播。如果不亲自调试实际对象,我无法确定。但基本上,它抱怨img1的结构(其形状)和[75,75,75]的结构。”。例如,您可以尝试将其与75和110进行比较。有关其他选项,请阅读有关numpy广播的更多信息。
img1[(img1 >= [75,75,75]) & (img1 <= [110,110,110])] -= 8