PiCamera 和 CV2 imdecode 总是返回 None

PiCamera and CV2 imdecode always returning None

我在 Raspberry PI 上通过 PiCamera 使用 CV2 时遇到问题。这是我的代码:

camera = PiCamera()
camera.resolution = ( 320, 240 )
camera.framerate = 60
rawCapture = PiRGBArray( camera, size=( 320, 240 ) )
time.sleep(1)
start = time.time()

for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):


    # and occupied/unoccupied text
    images = frame.array

    # show the frame
    cv2.imshow("Frame", images)


    cv_img = images.astype(np.uint8)

    gray  = cv2.imdecode(np.fromstring(cv_img, dtype=np.uint8), cv2.IMREAD_GRAYSCALE)
    image = cv2.imdecode(np.fromstring(cv_img, dtype=np.uint8), cv2.IMREAD_UNCHANGED)

    print("IMAGE: ",image)
    print("GRAY: ",gray)

image 和 gray 总是 None 而 images 和 cv_image 包含正确的框架。我真的不明白为什么它不起作用,你能帮帮我吗?

提前谢谢你。

我发现 picamera.array 是连接 picamaracv2 的可靠方法。 docs 有一些例子与你的相差不远。

一旦您完全进入 cv2 领土,

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

是进行灰度转换的典型方法。通过 imdecode 的方式来做是过分的。