簡體   English   中英

Python圖像處理時間過長

[英]Python Image Processing Taking Too Long

我想用Python進行圖像處理。 問題是我有一個循環,將來自攝像機的圖像數據記錄到一個numpy數組中,但是在循環中,我試圖對從最后一張圖像到當前圖像的像素數據進行關聯,以確定是否需要做進一步的處理。 但是,這會破壞顯示滯后圖像輸出的循環的執行速度。

def gen(camera):
    image = np.zeros([480, 640, 3])
    last_image = np.zeros([480, 640, 3])

    frame_number = 0

    while True:
        frame = camera.get_frame()
        #new code

        if(frame_number % 10 == 0):
            #save the current frame
            image = frame
            #this line takes forever on 480x640x3 sized nd.arrray
            corr = signal.correlate(image, last_image)

        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        faces = faceCascade.detectMultiScale(
                    gray,
                    scaleFactor=1.1,
                    minNeighbors=5,
                    minSize=(30, 30),
                    flags=cv2.CASCADE_SCALE_IMAGE
                )

                # Draw a rectangle around the faces
        for (x, y, w, h) in faces:
                    cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
        #cv2.imshow('Video', frame)
        ret, jpeg = cv2.imencode('.jpg', frame)
        #if cv2.waitKey(1) & 0xFF == ord('q'):
         #   break
        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' + jpeg.tobytes() + b'\r\n\r\n')
        if(frame_number % 10 == 0):
            #save current frame as last frame for next process 
            last_image = frame

        frame_number += 1

多線程是解決此問題的方法嗎?

我不確定這是否可行,但是如果轉換為灰度后進行關聯,則可以使操作更快。 這將使大量數據之間的相關性降低,並且實際上可以通過適當的FPS來實現。

另一種方法可能是獨立關聯每個通道,在快速測試后,它可能會執行得更快。

另外,對於多線程方法,可以將每個RGB圖像關聯在不同的線程上。 究竟有多快,如果有多快,還可以通過實驗找出。 jwpfox的評論鏈接可能是一個好的開始。 但是,最后我在Python中使用多處理,這是一個將內存復制到每個子進程的問題。 我不知道這種多處理程序是否會執行相同的操作,但為將來的加速而牢記這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM