OpenCV & FFmpeg & Qt 学习之路 --1 配置开发环境

本人大四,非计算机相关专业,利用业余时间学习计算机技术;

由于Windows编译环境配置失败,树梅派太弱,作者决定转战Ubuntu,配置为联想笔记本电脑Windows/Ubuntu双系统。

以下是我的第一篇博客。

 

Table of Contents

Ubuntu下安装 FFmpeg 和 OpenCV

Ubuntu下安装 mp3&H264 编码器

Ubuntu下安装 SDL

2018-10-08 nginx服务器在raspbian上的部署

2018-10-08 OpenCV设置摄像头分辨率

2018-10-08 OpenCV存储视频

2018-10-10 创建Qt工程及配置编译路径

2018-10-10 Windows下编译minGW版的OpenCV

Ubuntu下安装 chorme 浏览器


 

 

 

 Ubuntu下安装 FFmpeg 和 OpenCV

FFmpeg:
首先安装yasm工具、SDL、x264解码器(见下文)。

源码中找到config.mak文件,找到

!CONFIG_FFPLAY=yes

注意了,我们去掉!
因为makefile时,加上!代表非即不编译,改为CONFIG_FFPLAY=yes

./configure --enable-shared --enable-debug
make --enable-shared --enable-static --disable-asm
make install

Opencv:
安装依赖(sudo apt-get install (一堆)lib...)
进入opencv目录,

mkdir build;cd build
cmake -D CMAKE_MAKE_TYPE=Debug
make
sudo make install

如执行有error: undefined reference to `cv::String::deallocate()'
原因是找不到链接库
solved:
1.用gedit打开/etc/ld.so.conf
 终端输入: sudo gedit /etc/ld.so.conf
 文件末行加入:include /usr/loacal/lib 

2.然后终端执行指令:
   sudo ldconfig

3.接着修改bash.bashrc文件 ,终端输入:
   sudo gedit /etc/bash.bashrc 
   文件末行加入:  
          PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
          export PKG_CONFIG_PATH 

4.最后source一下,让更改立即生效,终端输入:

     source /etc/bash.bashrc 

另外,需要安装工具pkg-config
通过
$ export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH
添加
可以执行下面的命令检查是否 /opt/gtk/lib/pkgconfig 路径已经设置在 PKG_CONFIG_PATH 环境变量中:
$ echo $PKG_CONFIG_PATH

或通过上面修改ld.so.conf文件的方法


 

 

 

 


 Ubuntu下安装 mp3&H264 编码器

 编译支持MP3,H264编码的ffmpeg

ffmpeg原有的系统中支持mp3和h264的解码,但是编码并不支持,所以,需要是应用第三方插件进行支持;

从configure --help可以看出:


点击(此处)折叠或打开

    [StevenLiu@liudeMacBook-Pro ffmpeg]$ ./configure --help 
      --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no]
      --enable-libx264 enable H.264 encoding via x264 [no]
     --enable-libmp3lame enable MP3 encoding via libmp3lame [no]


首先系统中需要包含libx264与libmp3lame,这两个lib能够从对应的git中下载得到

MP3编码对应web: http://lame.sourceforge.net/download.php

libx264对应Web: http://www.videolan.org/developers/x264.html

安装mp3编码库
安装libx264编码库
进入解压目录

    ./configure
    make
    make install


 

 

 

 


 Ubuntu下安装 SDL

编译安装的FFmpeg没有ffplay,原因是缺少SDL
编译SDL时
1、make时出现 fatal error: X11/extensions/XShm.h: No such file or directory

解决办法:搜到的解决办法是

sudo apt-get install x11proto-xext-dev

sudo apt-get install libxext-dev

========================================================================

2、之后make又出现以下问题:

./src/video/x11/SDL_x11sym.h:168:17: error: conflicting types for _XData32?
 SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
                 ^
./src/video/x11/SDL_x11dyn.c:95:5: note: in definition of macro 釹DL_X11_SYM?
  rc fn params { ret p##fn args ; }
     ^
In file included from ./src/video/x11/SDL_x11dyn.h:34:0,
                 from ./src/video/x11/SDL_x11dyn.c:26:
/usr/include/X11/Xlibint.h:568:12: note: previous declaration of 鈅XData32?was here
 extern int _XData32(
            ^
make: *** [build/SDL_x11dyn.lo] Error 1


解决方案:查阅了一些资料,发现是libx11-dev版本问题(查看版本如图),版本>1.5.99,所以需要修改src/video/x11/SDL_x11sym.h 文件,按照提示修改168行,


修改如下:

原来是:SDL_X11_SYM(int,_XData32,(Display *dpy,register  long *data,unsigned len),(dpy,data,len),return)

改后添加一个单词即可:(_Xconst)

SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)


再make 和 sudo make install就可以了。
--------------------- 
作者:Juffi 
来源:CSDN 
原文:https://blog.csdn.net/huierlc/article/details/50165237?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!


 

 


 2018-10-08 nginx服务器在raspbian上的部署

想用FFmpeg推送rtmp视频流,需要有一个rtmp服务器,作者用的是nginx+rtmp module

安装nginx+rtmp

参考使用 nginx 和 rtmp 插件搭建视频直播和点播服务器

1、安装依赖
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev1

2、安装nginx和rtmp

wget http://nginx.org/download/nginx-1.11.8.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
tar -zxvf nginx-1.11.8.tar.gz
unzip master.zip
cd nginx-1.11.8
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
make
sudo make install123456789

3、修改nginx配置文件
# /usr/local/nginx/conf/nginx.conf
# 添加

rtmp {
    server 
    {
        listen 1935;
        chunk_size 4096;
        application live 
        {
            live on;
            record off;
        }
    }
}


---------------------
本文来自 zizi7 的CSDN 博客 ,全文地址请点击:
https://blog.csdn.net/zizi7/article/details/54347223?utm_source=copy

2018-10-15注:
Ubuntu 下报错:

src/core/ngx_murmurhash.c: In function ‘ngx_murmur_hash2’:
src/core/ngx_murmurhash.c:37:11: error: this statement may fall through [-Werror=implicit-fallthrough=]
         h ^= data[2] << 16;
         ~~^~~~~~~~~~~~~~~~
src/core/ngx_murmurhash.c:38:5: note: here
     case 2:
     ^~~~
src/core/ngx_murmurhash.c:39:11: error: this statement may fall through [-Werror=implicit-fallthrough=]
         h ^= data[1] << 8;
         ~~^~~~~~~~~~~~~~~
src/core/ngx_murmurhash.c:40:5: note: here
     case 1:
     ^~~~


原因,是将警告当成了错误处理,打开nginx-1.11.2/objs/Makefile,
CFLAGS =  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g (去掉 -Werror)
再重新make -j 8
-Wall 表示打开gcc的所有警告
-Werror,它要求gcc将所有的警告当成错误进行处理

vagrant@qianjin:~/nginx-1.11.2$ make -j2
vagrant@qianjin:~/nginx-1.11.2$ make install


 

 

 


 2018-10-08 OpenCV设置摄像头分辨率

/* 设置摄像头参数 不要随意修改 */
capture.set(CV_CAP_PROP_FRAME_WIDTH, 1080);//宽度
capture.set(CV_CAP_PROP_FRAME_HEIGHT, 960);//
高度capture.set(CV_CAP_PROP_FPS, 30);//帧数
capture.set(CV_CAP_PROP_BRIGHTNESS, 1);//亮度
1capture.set(CV_CAP_PROP_CONTRAST,40);//对比度
capture.set(CV_CAP_PROP_SATURATION, 50);//饱和度
capture.set(CV_CAP_PROP_HUE, 50);//色调
capture.set(CV_CAP_PROP_EXPOSURE, 50);//曝光

# 在不同操作系统下由于USB摄像头驱动【注:猜测,也可能是OpenCV的问题】的不同,会出现支持的最大分辨率及帧率不同的情况
 
---------------------

本文来自 Ind-Robot 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/akay1997/article/details/76421757?utm_source=copy 


 

 


 2018-10-08 OpenCV存储视频

VideoWriter构造函数如下所示:

  

 VideoWriter(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true)

各参数含义如下:

filename: 输出视频文件的名称
fourcc:4-character code of codec的缩写,四个字符用来表示压缩帧的编解码。
fps:帧率,我猜是frame per second的缩写。
frameSize:每帧图片的大小
isColor: 如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)

例子:

#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'), 25.0, Size(640, 480));
    // 从一个文件夹下读取多张jpg图片
    String pattern = "G:\\temp_picture\\*.jpg";
    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));
        // 流操作符,把图片传入视频
        video << image;
    }
    cout << "处理完毕!" << endl;
    // 处理完之后会在得到一个名为test.avi的视频文件。
}

作者:冰不语
链接:https://www.jianshu.com/p/65aa6516baa6
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 


 

 

 

 

 2018-10-10 创建Qt工程及配置编译路径

1. 安装
Raspbian中apt安装

#查看安装包信息
apt-cache serch qt5 
apt-get install qt5-default

Windows中,要添加编译器MinGW及Qt至环境变量
(OpenCV的bin也要添加至环境变量)

Ubuntu中

  1. 在 http://download.qt.io/archive/qt/ 网址下载对应的Qt版本
  2. chmod 777 (Qt File Name).run #赋予运行权限
    ./(Qt File Name).run #运行
  3. apt方式安装qtchooser
  4. 在路径 /usr/lib/x86_64-linux-gnu/qtchooser/ 下找到qt5.conf文件
    修改该文件第一行为<Qt path>/bin/qmake
    第二行为<path>/Qt5.11.2
  5. 添加环境变量 export QT_SELECT=qt5
  6. apt方式安装libgl1-mesa-dev

2. 在创建Qt工程时,要在.pro文件里添加头文件、库文件路径(Linux)
创建QT应用,生成工程后打开pro文件,加入LIBS和INCLUDEPATH。

TARGET = targetName
TEMPLATE = app
SOURCES += main.cpp
LIBS +=/usr/local/lib/libopencv_*.so\ 
INCLUDEPATH +=usr/local/include/opencv\              
    usr/local/include/opencv2\

win32 {
INCLUDEPATH += E:\OpenCV_3.3.1\opencv-build\install\include
CONFIG(debug, debug|release): {
LIBS += E:\OpenCV_3.3.1\opencv-build\install\x86\mingw\bin\libopencv_*d.dll
} else:CONFIG(release, debug|release): {
LIBS += -LE:\OpenCV_3.3.1\opencv-build\install\x86\mingw\bin \
    -llibopencv_core331 \
    -llibopencv_highgui331 \
    -llibopencv_imgcodecs331 \
    -llibopencv_imgproc331 \
    -llibopencv_features2d331 \
    -llibopencv_calib3d331
}
}


--------------------- 
作者:修电脑的裁缝酱 
来源:CSDN 
原文:https://blog.csdn.net/huihut/article/details/78701814?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

注1:在windows下,路径仍为C:/,而不是C:\,移植时要注意
注2:OPenCV官方提供的Windows预编译版本是用VS编译器编译的,而Qt使用的是MinWG,所以需要重新编译OPenCV
        ---------------------
        作者:yuyuefan002 
        来源:CSDN 
        原文:https://blog.csdn.net/sha1996118/article/details/75622692?utm_source=copy 
        版权声明:本文为博主原创文章,转载请附上博文链接!

注3:

Qt工程编译出现问题
Gtk-Message: Failed to load module “canberra-gtk-module”

解决方法:
$ sudo apt-get install libcanberra-gtk-module

3. 2018-10-10 Windows下Qt程序的发布

  1. built release versio
  2. 打开Qt的控制台
  3. cd至程序所在的分区,直接键入c:
  4. cd至程序所在文件夹
  5. >>windeployqt *.exe,打包结束

4.Qt管理组件(解决“要继续此操作,至少需要一个有效且已启用的储存库”问题)

http://blog.sina.com.cn/s/blog_8564b95d0102ybpz.html

 


 

 

 

 

 2018-10-10 Windows下编译minGW版的OpenCV

/* 官网教程 */
https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows

/* 注1:mingw can't compile the MSMF capture code, you have to disable it: cmake -DWITH_MSMF=OFF */
https://github.com/opencv/opencv/issues/12642 

/* 注2:其它可能遇到的问题(sprinf不识别)及解决方案 */
/* if "sprinf_...", then iinsert #define NO_DSHOW_STRSAFE before #include <dShow.h> in cap_dshow.cpp */
https://blog.csdn.net/huihut/article/details/78701814 

注:编译成功但不产生头文件(install后会产生)

uname -m #查看编译器位数


 

 

 

 Ubuntu下安装 chorme 浏览器

ubuntu16.04安装chrome谷歌浏览器

sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub  | sudo apt-key add -
sudo apt-get update
sudo apt-get install google-chrome-stable
/usr/bin/google-chrome-stable

为chrome安装Flash播放器插件

屏幕右上角,“系统设置”–>“软件和更新”–>“其它软件”
勾选“Canonical合作伙伴”
点击“关闭”
终端输入:

sudo apt install adobe-flashplugin


 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值