我想将在 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 值?