一个编译opencv+contrib+cuda+cudnn 的命令与参数

在ubuntu 下使用cmake 编译opencv +contrib+cuda+cudnn

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/root/opencv_contrib-4.5.1/modules -D BUILD_OPENCV_PYTHON2=OFF -D BUILD_opencv_python3=ON -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 -D PYTHON_INCLUDE_DIR=/usr/include/python3.8 -D PYTHON_LIBRARY=/usr/lib/x86_64-index-gnu/python3.8 -D WITH_TBB=ON -D WITH_CUDA=ON -D OPENCV_DNN_CUDA=ON -D CUDA_ARCH_BIN=6.1 -D OPENCV_PC_FILE_NAME=opencv.pc ..

编译opencv + cuda + cudnn 的注意事项

linux 版,需要使用ubuntu 发行版,避免使用centos 或其他RED HAT 系列的发行版,RED HAT 系列的发行版包不太好找,必须注意需要从nvidia 上下载官方的显卡或运算卡驱动,不要使用第三方的驱动。建议下载直接运行的后缀 .run  的包不要使用tar.gz  需要编译的包,这样可以更省事。另外需要注意的是.run  的包必须在命令行下运行,并且不要运行x window。如有x window  的进程在运行,需使用 systemctl stop gdm  关闭。安装显卡驱动后,下载并安装对应版本的nvidia  官方cuda tool kit。 下载 .run 版本即可。 需要注意的是,在安装过程中不要安装tool kit 包里的 显卡驱动,否则会报错。下载并解压 nvidia 官方的 cudnn 库,需要注意的是,新版本需要把include 和 lib  全部复制到 cuda  对应的目录,这里大多数网上文档都说只把cudnn.h 和 某几个头文件复制过去,这是错的,这是个坑,新版本这么干的话在编译OPENCV时会报找不到 cudnn 。最后,需要注意的是在编译OPENCV时,他会查找系统里的PYTHON JAVA等其他平台的相关库和运行环境并编译对应的库,LINUX上他默认找到并编译的是PYTHON2.7  对于现在流行的PYTHON 3.X 他默认是不查找的,需要在cmake  命令上加上对应的参数,让他查找PYTHON3.X 并且强制关闭PYTHON2 ,才能编译PYTHON3的库。编译后,需要在opencv build 目录下找到并运行python setup.py install 安装编译生成的OPENCV到python3环境,如果用的是VENV 的话,就要先activate VENV 然后再用VENV 的python 执行安装

Tensorflow 环境搭建

$ python3 -m venv _pml_

$ source _pml_/bin/activate

$ python -m pip install –upgrade pip

$ python -m pip install –upgrade setuptools

$ pip list

# 安装库

$ pip install tensorflow

$ pip install matplotlib seaborn

$ pip install Pillow opencv-python opencv-contrib-python

$ pip install scikit-learn

# linux 上需要的

$ sudo apt install python3-tk

springboot 打包外置配置文件

以springboot 2.2.1为例,在系统启动方法如 WebApplication 里添加注解

@PropertySource(value = {"file:${spring.profiles.path}/schedule_settings.properties"})

并在对应的配置文件实体添加同样的注解,如:

@PropertySource(value = {"file:${spring.profiles.path}/schedule_settings.properties"})
@ConfigurationProperties(prefix = "schedule")

在application.yml 或 application.properties 或 application-xxx.yml里添加spring.profiles.path 如:

profiles:
  path: ~/xxxxx/xxxxxxx/scheduletask/target

打包后,把自定义的配置文件如schedule_settings.properties 放在jar 包的同一个目录 或使用如下启动参数启动:

java -jar xxxxxxx.jar –spring.profiles.path=/xxxx/xxxxx/target

PPTP的 客户端之间的互相访问问题

两台主机,在两个不同的网络下,使用PPTP连接到在公网上的一台WIN2012 SERVER VPN上。这两台主机一台使用LINUX,一台使用WIN7/WIN10 。在两台主机分别成功连接到VPN服务器后,WIN7/WIN10 主机无法通过VPN的内网IP或LINUX的外网IP访问到LINUX主机。在LINUX 主机主通过 netstat -nr 命令,查看网关信息,显示LINUX主机的默认网关为原来所在网络的192.168.0.1,所以可以通过

sudo route del default (删除原来默认网关指向)

sudo route add default dev ppp0 (添加指向VPN的默认网关指向)

添加后用netstat -nr 查看默认网关如图,就可以通过VPN的内网IP访问LINUX主机

.NET CORE 使用EF连接 MYSQL的方法

通过NuGet安装上面的Microsoft.EntityFrameworkCore.Tools 和 MySql.Data.EntityFrameworkCore 两项组件

使用程序包管理器控制台执行上面的Scaffold-DbContext “server=xxx;port=xxxx;user=xxxx;password=xxxxx;database=xxxxx” MySql.Data.EntityFrameworkCore -OutputDir models -f 命令

需要注意的是,在win 7 上必须升级POWER SHELL 版本到最新,然后必须把安装组件的项目设为启动项目,否则会出现上图红色部分的错误提示

码之宝WEB/HTTP上传超大文件或整个文件夹C#开源程序

这是我个人用C#写的一个通过WEB/HTTP上传超大文件或整个文件夹程序,最初是为了某项目写的一段程序。但这个项目的上传功能最终没有落实这个需求,所以也没在进一步做下去了,但整个超大文件和文件夹的上传功能程序是完成了的。我测试过最大超过4G的文件都可以上传,文件夹为无限级文件上传的。或许有空将进一步强化里面的功能,包括HTTP的多线程分块上传和断点续传功能,再进一步包装成ACTIVEX控件或SilverLight什么的。现我把这个程序依据GPL协议开源出来,希望众多的技术大拿给我意见指出并改进这个上传程序。

 

GIT 下载地址:https://gitee.com/marblelog/HTTPWenJianShangChuan