Opencv:从 IP cam 使用 RTSP 时图片失真

Opencv: Distorted picture when using RTSP from IP cam

我写了一个程序成功获取 raspberry pi 摄像头视频并对其应用了一些图像处理,如下所示:

#include <opencv2/opencv.hpp>
VideoCapture vcap;
Mat Frame;
...
vcap.open(0);
while(true)
{
    vcap >> Frame;
    ...
    imshow("Output Window", Frame); 
    waitKey(1);
}

由于 raspberry 摄像头(勒克斯、快门等)的限制,我买了一个 IP 摄像头并尝试通过 rtsp 使用它的视频:

vcap.open("rtsp://admin:123456@192.168.1.65");

我收到了视频,但它像下图一样失真:

如图所示,控制台出现错误:

error while decding MB n, bytestream m 
cabac decode of gscale diff failed at n m

我在树莓派上用 VLC 进行了测试,但它只得到一个单帧,CPU 达到 100%,即使降低分辨率,比特率,fps 也没有改变。 我可以使用 omxplayer 在树莓派中查看 rtsp 视频。我的电脑也没有任何问题。

我已经在我的 raspberry pi 上安装了 Raspbian Jessie。

我还使用 GStreamer 代替 FFMPEG 重新编译了 OpenCV,但没有改变任何东西:

cmake ... -D WITH_FFMPEG=OFF -D WITH_GSTREAMER=ON ...

编译安装OpenCV 3.2解决问题,终于成功从我的网络摄像头中获取图片了。

我测试过但没有任何结果的其他方法包括编译和安装最新的 FFMPEG 包,还安装 this site 建议的所有依赖项。