转载,opencv4 缺少ffmpeg gstreamer

用opencv把图片合并成视频,代码遍地都是

// jpg2video.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main()
{
	// 构造一个VideoWriter
	VideoWriter video("test.avi", CV_FOURCC('M', 'J', 'P', 'G'), 50, Size(640, 480));
	// 从一个文件夹下读取多张jpg图片
	String pattern = "F:\\code\\132079944174097769jpg";
	vector<String> fn;

	glob(pattern, fn, false);

	size_t count = fn.size();
	for (size_t i = 0; i < count; i++)
	{
		Mat image = imread(fn[i]);
		// 这个大小与VideoWriter构造函数中的大小一致。
		resize(image, image, Size(640, 480));
		imshow("img", image);
		waitKey(10);
		// 流操作符,把图片传入视频
		video << image;
	}
	cout << "处理完毕!" << endl;
	system("pause");
	// 处理完之后会在得到一个名为test.avi的视频文件。
}

opencv4.0.0中已经对CV_FOURCC进行了改变,如下图所示,CV_FOURCC(‘P’, ‘I’, ‘M’, ‘1’)CV_FOURCC(‘M’,‘J’,‘P’,‘G’),已经改为CAP_OPENCV_MJPEG,希望大家不要走弯路https://blog.csdn.net/weixin_41406657/article/details/85123361

 

另外,仍然报错,

[ INFO:0] VIDEOIO: Enabled backends(6, sorted by priority): FFMPEG(1000); GSTREAMER(990); MSMF(980); DSHOW(970); CV_IMAGES(960); CV_MJPEG(950)
[ INFO:0] VideoIO pluigin (FFMPEG): glob is 'opencv_videoio_ffmpeg*.dll', 1 location(s)
[ INFO:0]     - E:\Program Files\opencv-4.1.0\build\bin\Debug: 0
[ INFO:0] Found 0 plugin(s) for FFMPEG
[ INFO:0] VideoIO pluigin (GSTREAMER): glob is 'opencv_videoio_gstreamer*.dll', 1 location(s)
[ INFO:0]     - E:\Program Files\opencv-4.1.0\build\bin\Debug: 0
[ INFO:0] Found 0 plugin(s) for GSTREAMER

。解决方法如下

https://www.cnblogs.com/huluwa508/p/10142718.html

 

一、Configure会报一些红色的警告信息,比如:

复制代码

 1 CMake Warning at cmake/OpenCVDownload.cmake:193 (message):
 2 FFMPEG: Download failed: 7;"Couldn't connect to server"
 3 
 4 For details please refer to the download log file:
 5 
 6 D:/study/opencv_with_contrib_test_sln/CMakeDownloadLog.txt
 7 
 8 Call Stack (most recent call first):
 9 3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)
10 cmake/OpenCVFindLibsVideo.cmake:200 (download_win_ffmpeg)
11 CMakeLists.txt:636 (include)

复制代码

 

提示FFMPEG下载失败,因为无法连接到服务器,打开 CMakeDownloadLog.txt 查看详细信息。

 

二、打开CMakeDownloadLog.txt

 

复制代码

#use_cache "D:/study/opencv-4.0.0/.cache"
#do_copy "opencv_ffmpeg.dll" "849286ccc527c99e5a218b67f13c6e8c" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll" "D:/study/opencv_with_contrib_test_sln/3rdparty/ffmpeg"

这两句的意思是说将 opencv_ffmpeg.dll(它的md5签名是 849286ccc527c99e5a218b67f13c6e8c,下载地址是  "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll" )
 从 "D:/study/opencv-4.0.0/.cache" 拷贝到 "D:/study/opencv_with_contrib_test_sln/3rdparty/ffmpeg"目录下。

#missing "D:/study/opencv_with_contrib_test_sln/3rdparty/ffmpeg/opencv_ffmpeg.dll"
目标目录下没有此文件

#cmake_download "D:/study/opencv-4.0.0/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll"
下载此文件到源代码路径 /.cache/ffmpeg/,并命名为"md5-文件名"

# timeout on name lookup is not supported
# Trying 151.101.108.133...
# TCP_NODELAY set
# connect to 151.101.108.133 port 443 failed: Connection refused
# Failed to connect to raw.githubusercontent.com port 443: Connection refused
# Closing connection 0
#
连接到服务器失败

复制代码

 

 

三、分析

公司工作机无法访问外网,自然就无法连接到下载服务器。那就直接通过外网下载好需要的文件,然后重命名为"md5-文件名",放在  /.cache/ffmpeg/ 文件夹下面,或者直接放到目标路径  /3rdparty/ffmpeg/opencv_ffmpeg.dll(不用重命名)。

注意:

1、 https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/ffmpeg_version.cmake" 无法直接下载,

而是直接打开了ffmpeg_version.cmake,可以右键网页选择另存为 ffmpeg_version.cmake.txt,然后再改为ffmpeg_version.cmake。这里如果自己新建一个txt,然后直接将网页上的内容拷进去,然后再该后缀为.cmake是不行的,会提示md5不匹配。

2、不同版本的OpenCV对应的 opencv_ffmpeg.dll 等缺失文件的 md5 签名是不一样的

 

四、总结

1、问题不难,一步一步的去求解;

2、沉下心来看英文,比六级简单得多;

3、ffmpeg_version.cmake 这个直接通过连接是不能直接下载的,自己新建一个.cmake不行的时候就去看下为什么不行,而不是不停的重复相同的操作以期望奇迹的出现。

4、当发现百度到的解决办法基本雷同时,就不必花大量时间去检索和自己的问题一模一样的博文了,这样只会浪费时间,心情也会变得焦躁,此时应该冷静的去思考。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Jetson Nano B01上安装OpenCV并添加FFmpeg支持,可以按照以下步骤进行操作: 1. 首先,下载OpenCV 4.1.1和对应的OpenCV-contrib 4.1.1版本。你可以从官方网站下载这些文件,链接如下: - OpenCV 4.1.1: https://github.com/opencv/opencv/tags?after=4.3.0 - OpenCV-contrib 4.1.1: https://github.com/opencv/opencv_contrib/tags?after=3.4.12 2. 将下载的文件解压到Jetson Nano上。 3. 打开终端,进入解压后的OpenCV文件夹,创建一个名为"build"的文件夹,并进入该文件夹: ``` cd opencv_4.1.1 mkdir build cd build ``` 4. 运行以下命令进行CMake配置: ``` sudo cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_PNG=OFF -DBUILD_TIFF=OFF -DBUILD_TBB=ON -DBUILD_JPEG=OFF -DBUILD_JASPER=OFF -DBUILD_ZLIB=OFF -DBUILD_EXAMPLES=ON -DBUILD_opencv_java=OFF -DBUILD_opencv_python2=OFF -DBUILD_opencv_python3=ON -DENABLE_PRECOMPILED_HEADERS=OFF -DWITH_OPENCL=OFF -DWITH_OPENMP=OFF -DWITH_LIBV4L=ON -DWITH_FFMPEG=ON -DWITH_GSTREAMER=OFF -DWITH_GSTREAMER_0_10=OFF -DWITH_CUDA=ON -DWITH_GTK=ON -DWITH_VTK=OFF -DWITH_V4L=ON -DWITH_TBB=ON -DWITH_QT=ON -DWITH_OPENGL=ON -DWITH_1394=OFF -DWITH_OPENEXR=OFF -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 -DCUDA_ARCH_BIN=5.3 -DCUDA_ARCH_PTX="" -DINSTALL_C_EXAMPLES=ON -DOPENCV_ENABLE_NONFREE=ON -DINSTALL_TESTS=OFF -DWITH_GTK_2_X=ON -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.1/modules .. ``` 5. 运行以下命令进行编译: ``` sudo make -j8 ``` 6. 等待编译完成(进度条达到100%)。 完成上述步骤后,你应该成功在Jetson Nano B01上安装了OpenCV,并添加了FFmpeg支持。请注意,这些步骤是基于引用\[2\]中提供的信息进行的。 #### 引用[.reference_title] - *1* *2* *3* [jetson nano装opencv4.1.1](https://blog.csdn.net/weixin_45235219/article/details/128840418)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值