Python matplotlib.pyplot.draw()在不同版本中的差别导致界面绘制异常问题

Ubuntu系统上进行如下配置:

之后执行如下测试代码:

上面的测试代码在Ubuntu 14.04.5版本上是可以正常执行的,对应的matplotlib的版本是matplotlib 1.3.1,但是放到Ubuntu 16.04.2系统上则是无法正常显示的,对应的matplotlib的版本是matplotlib 1.5.1

造成这个问题的原因在于matplotlib.pyplot.draw(),这个函数行为的改变,早期这个函数是同步更新界面的,后来的版本却变成了空闲异步更新界面,只有当matplotlib.pyplot.pause(interval)被调用的时候才会刷新界面。

所以只需要上面的代码修改成如下即可在不同版本之间兼容:

注意,我们在matplotlib.pyplot.draw()调用后面增加了matplotlib.pyplot.pause(interval)的调用。

貌似调用fig.canvas.flush_events()更合适

查看matplotlib的版本使用如下代码:

参考链接


OpenCV使用cv::imshow在子线程中更新图片不刷新

Ubuntu 16.04上测试OpenCV 3.2,遇到一个在子线程中更新图像,而界面不刷新的问题。

编译执行如下代码:

可以看到,上面的代码执行之后,界面并没有出现,即使出现也没有刷新。

这个问题是由于界面更新必须在主线程中执行,需要手工通知主线程。

修改后的代码如下:

也就是每次更新图片后手工调用代码

这个等候时间,只要大于0即可,比如:

参考链接


c++ opencv image not display inside the boost thread

文件'/var/lib/update-notifier/package-data-downloads/partial/adobe-flashplugin_20170912.1.orig.tar.gz'无法被用户'_apt'访问,无法降低权限以进行下载。 - pkgAcquire::Run (13: 权限不够)

最近在更新Ubuntu 16.04系统的时候,发现总是在安装Adobe Flash更新的时候失败,提示如下信息:

如果系统语言是英文的,可能看到下面的信息:

解决方法如下:

这样,就可以正常安装更新了。

参考链接


Can't drop privileges for downloading as file '/var/lib/update-notifier/package-data-downloads/partial/andale32.exe' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

在Makefile中检查gcc版本

问题描述

我想使用一些在旧的GCC版本中不可用的GCC警告开关(例如-Wtype-limits)。

有没有一个简单的方法来检查GCC版本?

最佳解决方案

我不会说容易,但是可以使用GNU makeSHELL函数来执行gcc --version命令,然后使用ifeq条件表达式来检查版本号,并适当地设置CFLAGS变量。

以下是一个简单的MakeFile示例:

注意:不存在ifgt语法。但是可以使用expr命令进行比较。

例子如下:

次佳解决方案

要将完整的3部分GCC版本(不仅第一位数字)转换成数字格式,适合比较(例如40701)使用

其中解决了任何版本部分中双数字版本号的可能性,以及gcc -dumpversion输出内容缺少3个部分的可能性(在一些较早的GCC版本中存在这种情况)。

所以要测试MakeFile中的版本,使用(注意$$里面的最后一个sed命令)

第三种解决方案

我刚刚遇到这个问题,我需要测试GCC的前两位数字,想要一个比上面sed过滤字符串更复杂的操作。我使用bc进行比较,因为它支持浮点数(expr将非整数(non-integers)都视为字符串):

如果在GCC 4.9之后发布了GCC 4.10,那么用sed处理是必要的:

参考链接


在Makefile中检查gcc版本?

Ubuntu 16.04.3系统上OpenPTrack V1版本安装配置(Kinect V2)

对于Ubuntu 14.04.5系统上的安装操作,请参考Ubuntu 14.04.5系统上OpenPTrack V1版本安装配置(Kinect V2)

下面是我自己fork出来修改后的代码在Ubuntu 16.04.3系统上的安装操作

要求机器上必须有CUDA 8.0/9.0支持的显卡才可以。

1.从GitHub上获取项目代码

2.安装ROS

3.安装OpenPTrack

4.链接OpenPTrack目录

5.Kinect V2驱动程序安装

检查当前用户目录下的.bashrc文件,注释掉如下内容:

然后执行如下命令:

6.重新编译代码

执行如下命令:

检查当前用户目录下的.bashrc文件,然后注释掉如下内容:

上面语句如不注释,会导致程序启动时候的崩溃。

新建一个Shell,执行如下命令

执行此步的时候如果提示找不到Kinect设备,请重启一下系统再试试。

7.测试系统

可能需要重新插拔一下KinectUSB数据线,然后执行如下命令

执行之后,等待十几秒,然后Ctrl+C中断执行。
执行完成后,执行

之后,会弹出三个界面出来。

参考链接


Kinect V2 深度图与彩色图融合(Ubuntu 14.04)

参考Kinect V2在Ubuntu 14.04系统上的驱动配置与安装在一个全新安装的Ubuntu 14.04系统中配置完成相关的驱动及其依赖。

Kinect V2深度图与彩色图融合的方式,简单粗暴,由于深度图像是512*424大小,因此,直接把彩色图像缩放成对应的512*424,然后像素点一一对应。至于原始大小的彩色图像,那么就是一片像素对应同一个深度即可。

注意,这个方式只适合Kinect V2,可以理解成Kinect V2的设计就是这样的,两个设备出厂的时候就校准为这样的输出。

具体的转换代码参考registration.cpp,Registration.cpp,建议直接调用驱动层提供的功能来实现,这样的话,一系列的参数设置可以同步,否则上层每次修改了分辨率等参数的时候,要自己手工修改这些数据。

Python深度图与彩色图融合的例子如下:

 

参考连接


Debian:如何从Jessie升级为Stretch(Debian 8.0 升级到Debian 9.0)

Debian 9(代号为Stretch)已经正式发布,可以开始尝鲜Debian 9了。

1. 更新Debian Jessie到最新版

2. 将软件源改为Stretch安装源

3. 升级系统版本

4. 重启

参考链接


Debian:如何从 Jessie 升级为 Stretch

Kinect V2在Ubuntu 14.04系统上的驱动配置与安装

以下的操作是在一个全新安装的Ubuntu 14.04系统上进行的,目前已知在安装了ROS的系统上并且已经安装过ROS版本的Kinect V2驱动的,可能需要先移除以前安装的面向ROS编译的Kinect V2驱动才行。

首先是安装配置驱动程序以及运行依赖库

参照libfreenect2 install linux的说明安装驱动

安装Python扩展

Python例子如下:

注意,如果编译的时候出现如下错误:

则该现象出现的原因是首先参照

进行了编译,并且编译的时候是没有开启CUDA支持的。

然后执行了

因此在~/libfreenect2/include/libfreenect2/下面已经生成了config.hexport.h这两个文件。
然后又按照我们这里的

重新编译,并且这次开启了CUDA支持,导致GCC在编译的时候使用了我们在~/libfreenect2/build/libfreenect2/下面生成的config.hexport.h这两个文件,而NVCC却使用了~/libfreenect2/include/libfreenect2/下面的config.hexport.h进行编译,导致上面的错误发生。

因此删除全部的临时文件,然后再次重新编译即可。

参考连接


Ubuntu 14.04.5系统上OpenPTrack V1版本双Kinect V2简单校准

参照Ubuntu 14.04.5系统上OpenPTrack V1版本安装配置(Kinect V2)配置安装完成后,是单台机器的方式。

如果场地比较大,则需要部署多个Kinect V2。由于每台Kinect V2看到同一个人的视角不同,因此需要校准,才能进行合并。

下面,我们用两台PC+两个Kinect V2(每台机器上连接一个Kinect V2)来演示一下如何校准的操作。

继续阅读Ubuntu 14.04.5系统上OpenPTrack V1版本双Kinect V2简单校准

OpenMdeiaValut 3.0.86上编译Linux Kernel 4.13-rc6/Linux Kernel 4.13-rc7/Linux Kernel 4.13 Mainline

也可以使用下面的方式正常编译Linux Kernel 4.13-rc7/Linux Kernel 4.13 Mainline

建议使用VirtualBox上建立虚拟机,保证磁盘空间不小于32GB,给root用户设置密码,远程通过shell登录到虚拟机。

查询虚拟机的IP地址的时候,使用

命令查询。虚拟机网卡设置的时候,设置为桥接模式,默认的NAT模式无法通过SSH登录。

然后执行如下命令:

完成后,在当前用户目录下生成linux-image-4.13.0-rc6_4.13.0-rc6-10.00.Custom_amd64.deb安装包,执行如下命令安装:

参考链接