Opencv raspberry pi 3 视频播放c++

Opencv raspberry pi 3 video play c++

我目前正在使用 OpenCV 库在 raspberry pi 3 上进行视频处理项目。作为指导,我正在阅读 opencv2 计算机视觉应用程序编程手册。如果你熟悉这本书,它解释了windows visual studio上的所有内容。但是我能够使用 cmake 编译东西。一切正常。

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/core/core.hpp>
int main()
{
// Open the video file
cv::VideoCapture capture("../bike.avi");
// check if video successfully opened
if (!capture.isOpened()){
std::cout<<"Error loading video!.."<<std::endl;
return 1;
}
// Get the frame rate
double rate= capture.get(CV_CAP_PROP_FPS);
bool stop(false);
cv::Mat frame; // current video frame
cv::namedWindow("Extracted Frame");
// Delay between each frame in ms
// corresponds to video frame rate
int delay= 1000/rate;
// for all frames in video
while (!stop) {
// read next frame if any
if (!capture.read(frame))
break;
cv::imshow("Extracted Frame",frame);
// introduce a delay
// or press key to stop
if (cv::waitKey(delay)>=0)
stop= true;
}
// Close the video file.
// Not required since called by destructor
capture.release();
}

本书作者使用此代码。我知道此代码适用于 linux windows 等,但不适用于 raspberry pi。我用用 raspicam 录制的视频更改了 bike.avi。 raspivid -o bike.h264 -h 620 -w 480 -fps 15。但我仍然得到 Error loading video!..。 Ps:我可以使用 ssh -X 通过 vlc 播放器播放 bike.avi 从图书网站下载的视频。

我的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 2.8)
project(salt)
FIND_PACKAGE(OpenCV REQUIRED)
add_executable(a.out main.cpp)
TARGET_LINK_LIBRARIES(a.out ${OpenCV_LIBS})

我找到问题了。带 USB 网络摄像头的 OpenCV 在 raspberry pi 上运行良好。但是当它使用 raspverry pi 相机时,它不被支持。这就是为什么一些开发人员创建了与 OpenCV 一起工作的 RaspiCam 库的原因。他们甚至提供 cmake 配置。我安装了它并捕获了大约 25fps 的视频,效果很好。此解决方案适用于 C++ 用户。如果您使用 python 编码,只需搜索 python raspberry pi 相机 OpenCV。