如何在Python中将OpenCV转换为RGBA格式的PIL?

如何在Python中将OpenCV转换为RGBA格式的PIL?,python,opencv,python-imaging-library,webcam,Python,Opencv,Python Imaging Library,Webcam,我想将OpenCV中的网络摄像头镜头转换为PIL,以便逐像素读取图像并获得RGB格式 在使用PIL时,我通常得到RGBA格式,但现在我得到的是一个整数,而不是我所期望的四个数字 考虑以下代码片段: cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT, my_height) cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH, my_width) cv.SetCaptu

我想将OpenCV中的网络摄像头镜头转换为PIL,以便逐像素读取图像并获得RGB格式

在使用PIL时,我通常得到RGBA格式,但现在我得到的是一个整数,而不是我所期望的四个数字

考虑以下代码片段:

cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT, my_height)
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH, my_width)
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FORMAT, cv.IPL_DEPTH_32F)
  img = cv.QueryFrame(capture)
...
    index_value = index_value + 1
    picture_time = current_time + variance
    #Give the cv image to PIL
    im = Image.fromstring("L", cv.GetSize(img), img.tostring())
    #Get the color set out of the images
    width, height = im.size
    image_pixels = im.load()
    total_size = width * height
    colors = {}
    for h in range(height):
        for w in range(width):
            print width, height
            detail = image_pixels[w, h]
            #Filter our transparencies and dark colors
            print detail
当我覆盖网络摄像头时,我得到的值是14,当我不覆盖网络摄像头时,得到的值是140


如何以Pythonic方式从网络摄像头中正确抓取图像并获取每个像素的RGB值?

cv.QueryFrame+img.tostring以什么像素格式向您返回图像数据?您传递给Image.fromstring的L模式参数告诉它需要8位黑白像素。@martineau,我一直在寻找这些信息,以便帮助回答这个问题,但似乎在任何地方都没有记录。为什么要使用旧的cv而不是cv2?@MarkRansom:我发现了同样的问题。如果所有其他方法都失败了,也许OP可以通过在抓取不同纯色纸张(理想情况下为红色、绿色和蓝色)后检查返回内容来实验确定。我决定在完成转换后尝试保存图像。没错,这是格拉斯哥。是的,关于L是什么的文档很少。