相关疑难解决方法(0)

在Pygame表面内显示cv2.VideoCapture图像

我正在尝试使用opencv(cv2)将网络摄像头源流式传输到pygame表面对象中.问题是颜色没有正确显示.我认为这是类型转换,但我无法理解pygame表面文档以了解它的期望.

这段代码演示了我在说什么

import pygame
from pygame.locals import *
import cv2
import numpy

color=False#True#False
camera_index = 0
camera=cv2.VideoCapture(camera_index)
camera.set(3,640)
camera.set(4,480)

#This shows an image the way it should be
cv2.namedWindow("w1",cv2.CV_WINDOW_AUTOSIZE)
retval,frame=camera.read()
if not color:
    frame=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.flip(frame,1,frame)#mirror the image
cv2.imshow("w1",frame)

#This shows an image weirdly...
screen_width, screen_height = 640, 480
screen=pygame.display.set_mode((screen_width,screen_height))

def getCamFrame(color,camera):
    retval,frame=camera.read()
    if not color:
        frame=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    frame=numpy.rot90(frame)
    frame=pygame.surfarray.make_surface(frame) #I think the color error lies in this line?
    return frame

def blitCamFrame(frame,screen):
    screen.blit(frame,(0,0))
    return screen

screen.fill(0) #set pygame screen to black …
Run Code Online (Sandbox Code Playgroud)

python webcam opencv pygame

6
推荐指数
1
解决办法
6416
查看次数

标签 统计

opencv ×1

pygame ×1

python ×1

webcam ×1