Golang之v1.9中线程安全的sync.Map 2017-10-18

Golang 1.9 sync.Map 使用

  • Store
  • LoadOrStore
  • Load
  • Delete
  • Range
// 说明: 存储一个设置的键值。
Store(key, value interface{})

// 说明: 返回键的现有值(如果存在),否则存储并返回给定的值,如果是读取则返回true,如果是存储返回false。
LoadOrStore(key, value interface{}) (actual interface{}, loaded bool)

OpenCV之基于混合高斯模型GMM的运动目标检测 2017-10-17

基于混合高斯模型GMM的运动目标检测

#include <iostream>  
#include <string>  

#include <opencv2/opencv.hpp>  


int main(int argc, char** argv)  
{  
    std::string videoFile = "../test.avi";  

    cv::VideoCapture capture;  
    capture.open(videoFile);  

Linux之制作镜像文件 2017-09-25

制作ISO镜像的方法

// 把/dev/cdrom目录制作为镜像
dd if=/dev/cdrom of=/root/myiso.iso
mkisofs -r -o myiso.iso /dev/cdrom
cp -r /home/user myiso.iso

Linux之Huawei设备不能正常识别ttyUSB解决办法 2017-09-25

解决 12d1:1446 -> 12d1:1436

主要原因还是因为当前Huawei设备模式不对,一般如果处于存储模式就不会初始化ttyUSB设备等

sudo apt-get install usb-modeswitch
DefaultVendor = 0x12d1
DefaultProduct = 0x1446

TargetVendor = 0x12d1
TargetProductList = “1001,1406,140b,140C,1412,141b,14ac”

OpenCV之三帧差分法运动检测 2017-09-21

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <stdio.h>

#define threshold_diff1 25 //设置简单帧差法阈值
#define threshold_diff2 25 //设置简单帧差法阈值

using namespace cv;
using namespace std;

int main(int argc,unsigned char* argv[])
{
    Mat img_src1,img_src2,img_src3;//3帧法需要3帧图片
    Mat img_dst,gray1,gray2,gray3;
    Mat gray_diff1,gray_diff2;//存储2次相减的图片
    Mat gray_diff11,gray_diff12;
    Mat gray_diff21,gray_diff22;
    Mat gray;//用来显示前景的
    bool pause=false;

OpenCV之从video设备录制视频 2017-09-04

OpenCV之从video设备录制视频

#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <QLatin1String>
#include <QQueue>
#include <QDateTime>

using namespace cv;
using namespace std;

int main(int argc, char *argv[])
{

Qt之QMultiMap一键多值 2017-09-02

Qt之QMultiMap一键多值

在QT中常用的键值对QMap,当遇到一键多值需要存储时往往QMap中vector这样存储, 但是QT提供了QMultiMap来解决这个问题

http://doc.qt.io/qt-4.8/qmultimap.html
QMultiMap<QString, int> map1, map2, map3;

map1.insert("plenty", 100);
map1.insert("plenty", 2000);
// map1.size() == 2

Qt之线程与数据传递的使用 2017-08-25

Qt之线程与数据传递的使用

// .h
class Demo : public QObject
{
    Q_OBJECT
public:
    Demo();
    void start();
public slots:
    void run() {
    start();
    }
signals:
    void send(QJsonObject);
};

Ubuntu之Firefox开机自启及全屏 2017-08-22

Ubuntu之Firefox开机自启及全屏

# 安装全屏插件 Firefox FullScreen
https://addons.mozilla.org/zh-CN/firefox/addon/mwfullscreen/?src=search

# 方法一:设置开机自动启动
# vi ~/.config/upstart/firefox.conf
start on desktop-start  
stop on desktop-end  
exec /usr/bin/firefox

# 方法二:设置开机自动启动
mkdir -p ~/.config/autostart
cp /usr/share/applications/firefox.desktop ~/.config/autostart/firefox.desktop
chmod +x ~/.config/autostart/firefox.desktop

Linux之通过udev规则指定设备文件名 2017-08-01

Linux之通过udev规则指定设备文件名


需求:有三个/dev/video0-3设备,但是每次重启设备的文件名称会改变, 想固定这个设备文件名

当前 /dev/video0 是 PCI 采集卡,1-2是USB摄像头 …

// 通过 udevinfo (ubuntu:udevadm) 查看设备信息
// udevadm (udev管理工具)