本人大四,非计算机相关专业,利用业余时间学习计算机技术;
由于Windows编译环境配置失败,树梅派太弱,作者决定转战Ubuntu,配置为联想笔记本电脑Windows/Ubuntu双系统。
以下是我的第一篇博客。
Table of Contents
2018-10-08 nginx服务器在raspbian上的部署
2018-10-10 Windows下编译minGW版的OpenCV
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中
- 在 http://download.qt.io/archive/qt/ 网址下载对应的Qt版本
- chmod 777 (Qt File Name).run #赋予运行权限
./(Qt File Name).run #运行 - apt方式安装qtchooser
- 在路径 /usr/lib/x86_64-linux-gnu/qtchooser/ 下找到qt5.conf文件
修改该文件第一行为<Qt path>/bin/qmake
第二行为<path>/Qt5.11.2 - 添加环境变量 export QT_SELECT=qt5
- 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程序的发布
- built release versio
- 打开Qt的控制台
- cd至程序所在的分区,直接键入c:
- cd至程序所在文件夹
- >>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