今年队里统一采用了妙算作为minipc,经过一个半星期的踩坑填坑,查阅博客终于完成了妙算比赛的配置,现在记录一下踩坑的心酸,估计是最全踩坑记录了,希望对读者有所帮助吧,以及方便以后的查阅,本篇博客只是总结我配置时候遇到的各种问题。
妙算环境配置,经过踩坑发现
最佳最稳定的软件配置为 Ubuntu16.04 QT5 opencv3.4.5
多篇博客开局即建议换源,看了好多博客说了各种奇奇怪怪的东西对于博主这种初学者来说,总结到了一点,妙算2-G采用的是ARM架构与我们正常笔记本在Ubuntu上面换源可能有点不一样,毕竟妙算真的看脸,而且妙算在设置里面选择最佳服务器这种换源方法是不行的,只能通过修改sourses.list来进行换源,有的博客推荐中科大的源,因为中科大的源对ARM架构友好一点,由于刚入门我也不是很了解只能把我看到的东西进行汇总分享一点,我第一次实操的时候没有采用换源,还是能够成功配置的。
当你save时候可能出现这种编译出错的情况,说什么无法编译,可以不用管他,这是我第二次配置时采用的换源 。
总之最好采用换源吧,毕竟换源可以避免许多不不必要的东西比如无法定位软件包啥的,当然了换不换源感觉都行。
看了许多博客如何如何下载QT5的感觉挺麻烦的,幸好找到了一篇比较简单的,直接在Ubuntu命令行安装QT5。
sudo su root (切换到root用户最高权限)
sudo apt-get install cmake qt5-default qtcreator (安装qt5)
此刻可能会出现问题任务被锁住无法下载, csdn上面一般有两种方法一种是kill他的进程释放锁文件还有一种方法是强制解锁,经过我实操好像对于妙算的Ubuntu系统来说没有什么用。实操发现直接重启系统然后直接更新更新一下就好了
sudo apt-get update
sudo apt upgrade
要是继续被锁的话,继续重复更新重启毕竟妙算看脸,不过一般第一次按照步骤装的话应该不可能出现任务栏被占用的情况的,我出现这种情况是已经踩坑n次后了。
一般我们根据命令行直接安装的QT是无法直接使用的,需要我们自己给QT配置编译器,我们选择进行gcc的配置。
定位到Tools->Options->Build & Run->Compilers ,然后点击Add并选择GCC,在compiler path一栏,输入gcc地址:/usr/bin/gcc 。接下来修改ABI选项,将其依次修改为custom – arm – linux – generic – elf – 64 bit,完成后点击apply生效。
接下来,点击Kits选项,新建一个名为”BOF”的编译工具,这个名字可以自己随便取,用刚刚配置好的gcc就OK了。
友情提醒一定要将QT界面最大化,不然是找不到Tools栏,要是配置完之后还不能用的话,重新新建一个项目就行了,要是找不到tools栏的话,你可以直接建一个工程然后选择mange kits选项,按照上面方法进行配置就行了,但是这种方法配置的编译器,在这个工程里面是用不了的,必须重新创建一个工程才可以。
1.由于妙算自带的一个opencv所以在接下来的安装操作中避免操作混乱我们先 删除自带的opencv
sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update
2.从官网上下载opencv选择Sources文件
3.按照下载依赖包
sudo apt-get install build-essential cmake git pkg-config gfortran yasm
sudo apt-get install libjpeg8-dev libpng12-dev libtiff5-dev
sudo apt-get install libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev
sudo apt-get install libxine2-dev libv4l-dev
sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
sudo apt-get install qt5-default libgtk2.0-dev libtbb-dev libatlas-base-dev
sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev sphinx-common texlive-latex-extra libx264-dev
可以选择
sudo apt-get install libavresample-dev libgphoto2-dev doxygen openjdk-8-jdk pylint libvtk5-dev
4.找到opencv-3.4.5.zip文件所在的目录
unzip opencv-3.4.5.zip
得到解压后的opencv文件
5.在解压的文件中创建build并且进入
mkdir build
cd build
6.cmake一下
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
一般第一次不会报错,当你编译失败一次过后可能重新cmake的时候可能会出现报错 如果出现报错的话把cmakecache.txt删除了再进行编译就可以了。
7.执行编译命令,会有一个很长的编译过程,一般妙算2-G的cpu可以用到八线程,我一开始不知道每次编译一下等了三个小时,人都呆了。
sudo make -j8 八线程 (可以根据自己的minipc cpu性能决定)
8.安装opencv
sudo make install
9.配置opencv的路径
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
有的博客到这里就结束了,其实我实操的时候发现到这里只是配置了opencv的一个动态库,好像还是没有什么用要是用QT进行opencv操作的话。也有可能我用pencv3的缘故的话。
还有一种方法将opencv的库添加到路径里面
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加
/usr/local/lib
执行如下命令使得刚才的配置路径生效
sudo ldconfig
你可以用第二种添加路径的方法看一下第一种有没有成功添加
10.添加完路径之后我认为要配置一下bash
sudo gedit /etc/bash.bashrc
这样会打开一个文本编译器然后将这两行代码写到最后就OK了
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
11.最后再更新一下便成功了
sudo apt-get update
12.检测一遍opencv安装是否成功
pkg-config --modversion opencv
成功安装opencv3.4.5会出现opencv 3.4.5,要是出现找不到opencv的话,那么你的opencv安装就失败了。
因为linux系统摄像头驱动是V4L2,所以要更新安装一下他的驱动,可以用opencv直接安装驱动
1.安装cmake-gui
sudo apt-get install cmake-qt-gui
2.安装qv4l2
sudo apt install qv4l2
sudo apt install v4l-utils
v4l2-ctl
3.cd 到opencv的build下面
直接
cmake gui ..
会弹出cmake图像化的操作界面
编译V4L2
在搜索栏里面搜索V4l 把相关项全勾选 然后Generate一下就可以了
4.安装更新V4L2
make -j8
sudo make install
这样一套完整的环境配置便成功了
opencv的检测
cmake .
make
./opencv_example
在一般的Ubuntu上面直接命令行输入可以调用摄像头,摄像头显示框有 Hellow opencv编译成功
(一般这种检查妙算用不到)
QT+opencv的检测
新建一个QT项目
正常运行一次要是可以运行QT安装没有问题
打开pro文件,配置pro文件
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += \
main.cpp
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv \
/usr/local/include/opencv2
LIBS += /usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_imgproc.so \
/usr/local/lib/libopencv_imgcodecs.so
打开cpp文件,测试一下
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("cat.jpg");
line(img,Point(1,1),Point(250,250),Scalar(0,0,255),5);//画一条直线
imshow("可爱的小猫咪", img);
waitKey(0);
return 0;
}
最终我测试是成功的
当时直接参考了这个大佬的博客,连图都用了他的小猫咪,由衷感谢,大佬们的无私开源,注意一下照片的格式在这个大佬的测试代码中他的照片的jpg格式,我们要直接使用的话,照片格式是png格式。
最后感谢大佬的开源,被妙算折磨的一个一个半星期里面还好有这些博客,希望这一篇我的踩坑经历可以让入门需要用妙算的好兄弟少掉坑。
参考博客
第一篇博客感谢这些大佬的博客,真心感谢。写的不好,请多指教。
**class:**是一个面向对象的类,用来描述具有相同的属性和方法的对象的集合,类可以起到模版的作用,所以在创建实例的时候,可以将我们认为必要的属性填写进方法__init__,具体查看代码示例self:表示创建实例本身,所以就可以把各种属性绑定到self调用:在类中定义函数,类和函数都可作为一个模块保存。要调用类或函数只需要import这个类或函数所在模块名称就可以了。在一个模块当然可以访问另外一个模块的类参数实例化后,类下的所有方法,都可以调用实例参数实例代码如下class Cc(object
Python 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。定义一个函数可以定义一个由自己想要功能的函数,以下是简单的规则:1.函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。2.任何传入参数和自变量必须...
来源:AspNet Core IIS部署 HTTP 错误 500.19 - Internal Server Error环境:Windows Server 2016 DCIIS 10netcore 2.2错误产生过程(推测可能性):1,项目文件夹从别的地方复制而来2,NetCore Hosting 重新安装过3,netcore项目的IIS程序池上传重建过4,以上混合导致的结果:...
为什么80%的码农都做不了架构师?>>> ...
***//写了一下对快速排序的各种优化//证明的话有时间会写出分析//只自己打了一些代码大家随意看看//如果有错误的还望指正***#define K 11#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 30000int m,n;int *p1=&m;int *r1=&n;//quick sort
背景庖丁同学在混迹在古典互联网界多年,构建 Java 应用程序一直都是使用Apache Maven,mvn的那几个常用命令早已烂熟于心,在加上现代 IDE 越来越智能,应用程序的构建从来就不是事儿,但是惊喜总会出现,有一天,庖丁的工作性质发生了改变,眼前的构建工具清一色的都是 Gradle,庖丁一脸的懵逼,束手无策,难道Maven 程序员就不能快速上手 Gradle了吗?实战性或者战术性程序员这时...
在如今的商业软件中,几乎每一幅图像的显示都采用了图像特效显示,例如读者比较熟悉的Windows的屏幕保护程序就采用了各种各样的图像特效显示,使人感到眼花缭乱和耳目一新。专业图像处理软件更是提供了丰富的显示方式供用户使用,可以方便的在程序中实现图像的特效显示,如PhotoShop 、Authorware等。本节主要介绍如何实现图像的浮雕、雕刻、百页窗、旋转、扫描、栅条、马赛克、和渐显渐隐显示等效果。
Caffe在Windows下编译还是遇到不少麻烦的...1.visual studio 2013 error C2371: 'int8_t' : redefinition; 引入的unistd.h文件里面重定义了int8_t ,用记事本打开文件注销之。2. error C3861: 'getpid': identifier ...
有人可以帮我弄这个吗.我有我的Select查询selectAttendance = """SELECT * FROM table """我想要我的选择查询的内容,并在下载csv文件时包含一个标题,所以我做了这个查询:with open(os.path.join(current_app.config['UPLOAD_FOLDER'], 'csv.csv'), 'wb') as csvfile:wri...
《道德经》上篇主要围绕“道”论述,下篇主要是围绕“德”论述。而在西方,耶稣是“道德”的典范,甚至成为一个象征符号。因为他为了替世人赎罪,忍受肉体和精神的极度痛苦。信徒出卖、信徒不认、被鞭打、戴荆棘冠羞辱、被本族人弃绝、被神弃绝,最后被钉到十字架上血液流干而死。《圣经》又写到耶稣就是“道”。《道德经》和《圣经》中这两个“道”有何异同呢?《道德经》的“道”谈《道德经》中的“道”
方法一:在Python的安装路径下找到Scripts文件下的pyinstaller-script.py文件并打开,如果路径没有引号则加上引号,此种情况一般发生在pyinstaller版本较低的情况下方法二:如果加上引号还是不能打包文件,则在DOS命令行进入Python安装路径的Scripts文件夹 执行:python pyinstaller-script.py G:\Pyt...
目录功能要求效果展示要点:0、upload自定义修改如下:el-upload代码:1、嵌套dialog自定义修改如下:dialog代码:完整代码:总结功能要求点击修改头像,弹出上传框 选择文件上传后弹出校验框 因头像为一张,确认、取消、关闭窗口需清空列表效果展示要点:0、拖拽上传upload自定义1、嵌套d...