之前按照网上的教程https://www.cnblogs.com/Rubyen2333/p/17337164.html编译的opencv库没有安装gstreamer支持,近期买了一个mipi摄像头安装在开发板进行研究,因为看到gstreamer为视频流硬解码,对视频的延时较少,所以决定重新编译一版支持gstreamer的opencv库。
先按照gstreamer学习(一) gstreamer-rtsp-server环境安装_gstream安装-CSDN博客的方法安装gstreamer库,在按照https://www.cnblogs.com/Rubyen2333/p/17337164.html的教程再次编译opencv库,然后就可以看到gstreamer支持从NO变成YES了。
在编写完有关opencv的C程序时,需要在Cmakelist.txt中添加编译好的opencv路径,以便编译时可以找到opencv库。
cmake_minimum_required(VERSION 3.1)
project(camera_test)
set(OpenCV_DIR /home/firefly/yjc/opencv-4.7.0/build/)
find_package(OpenCV REQUIRED)
#link_directories("/usr/local/opencv470/include/opencv4/opencv2/")
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(cmr_test cmr_test.cpp)
target_link_libraries(cmr_test ${OpenCV_LIBS})
这样就可以在程序里调用cv了。
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
cout << cv::getBuildInformation() << endl; //查看一下opencv的编译信息,记得保存下来好好看,以后遇到路径问题以这个为准
VideoCapture cap(0); // 更改自己的摄像头编号
if(!cap.isOpened())
{
cout << "无法打开摄像头" << endl;
return -1;
}
// 创建窗口
//namedWindow("摄像头", WINDOW_AUTOSIZE);
while(true)
{
Mat frame;
// 从摄像头捕获一帧图像
cap >> frame;
if(frame.empty())
break;
// 在窗口中显示图像
imshow("摄像头", frame);
// 按下 ESC 键退出
if(waitKey(30) == 27)
break;
}
// 释放资源
cap.release();
destroyAllWindows();
return 0;
}