- 博客(32)
- 资源 (1)
- 收藏
- 关注
原创 Gaussian Blur
图像的平滑模糊是一种很常见的操作,实际上是一个计算权重均值的过程。比如a,b,c三人各有100元,20元,3元,设置权重为(1,2,3),对b计算权重均值后b的钱为(1*100 + 2*20+3*3)/ 6 = 24.83元对应图像中就是3*3或更多个点取权重均值。如果权重满足正态分布,那么这个计算过程就是高斯模糊,权重也叫核。参考https://www.jianshu.com/p/...
2019-03-31 22:44:21 667
原创 rsa
N值:为两个质数q,p之乘积,比如q=7,p=11,则N=77L值:为p-1、q-1的最小公倍数,7-1=6,11-1=10,6和10的最小公倍数是30,则L=30E值:E和L互质且E小于L。13和30互质,则E=13D值:D小于L,D和E的乘积对L取余为1,显然7*13=91,91mod30=1,则D=7公钥对是(E,N),则为(13,77),私钥是(D,N),则为(7,77)...
2019-03-10 14:09:43 221
原创 opencv 基本绘图操作
实践一下opencv的基本绘图操作,点线圆走一套。虽然很基础,对于熟悉opencv的基本数据类型是很有帮助的。#include "opencv2/highgui.hpp"#include "opencv2/imgproc.hpp"#include <iostream>using namespace cv;using namespace std;void drawTe...
2019-01-03 00:35:24 3207
原创 goodFeaturesToTrack & cornerHarris
好不容易元旦两天假,学习了一下goodFeaturesToTrack 和 cornerHarris的使用。#include "pch.h"#include "opencv2/highgui.hpp"#include "opencv2/imgproc.hpp"#include <iostream>using namespace cv;using namespace st...
2019-01-01 21:23:09 403
原创 K-means
Kmeans又是一个以点到点距离为判断依据的算法,物理上的质心很好的形容了这个算法的目的。说的没有做的理解深,还是实践一下。#include "pch.h"#include <opencv2/core.hpp>#include <opencv2/imgproc.hpp>#include "opencv2/imgcodecs.hpp"#include <...
2018-12-27 23:49:09 95
原创 人脸检测
人脸检测在生活中已经随处可见,今天使用opencv来实践一番。void example_face_dectect(cv::Mat &image, cv::CascadeClassifier faceCascade, cv::CascadeClassifier eyeCascade) { std::vector<cv::Rect> faces; std::vector...
2018-12-23 20:11:21 131
原创 visual studio 配置opencv
1.添加环境变量2.创建项目后新建一个属性表3.双击创建的属性表,添加引用4.后续新项目直接导入这个创建的属性表即可。
2018-12-23 12:34:10 673
原创 blur & filter
理解:模糊就是让图像变的平滑,平滑到极致图片就变成了一个色块。锐化就是增加色彩的对比度,对比到极致图片就变成了很多色块。实践:void example_blur(const cv::Mat &image) { cv::Mat out; cv::namedWindow("example_blur", cv::WINDOW_AUTOSIZE); cv::Gaussian...
2018-12-22 14:07:56 178
原创 Support Vector Machines (SVM) 支持向量机
理解1.分割:二维平面上存在两类点,有多条线可以分割两类点,哪条线最优?2.最优:所有点到直线的距离中找到最小值,使这个最小值最大化的那条线。(即所有点到线A的距离中找到最短距离AL,再有所有点到线B的距离中找到最短距离BL,AL和BL谁更长则更优。假设平面上只有两个点,是不是刚好就是两个点正中间且与两个点连线垂直的那条线呢?)3.线性分割:就是用一条直线或一个平面可以进行分割...
2018-12-20 00:56:21 157
原创 i2c
i2c是使用非常广泛的通信协议,tp,sensor都用它,今天就来熟悉总结一下i2c的使用//i2c 写操作static int my_i2c_write(struct i2c_client *client, u8 addr, u8 *pdata, int datalen){ int ret = 0; unsigned int write_buf_len = 0; u8 write...
2018-12-08 23:30:42 361
原创 tasklet & workqueue
为了提升内核的响应速度,中断处理往往会分成上半部和下半部来执行。上半部在中断处理函数中处理少量事物并激活下半部,一般通过tasklet 或 workqueue 来实现。workqueue 参考:void workqueue_func(struct work_struct *work) // 下半部执行函数{ printk("workqueue bottom half\n"); ...
2018-11-26 22:37:35 173
原创 Linux input subsystem
最近学习了一下Linux的输入子系统编程,做个记录。简单分为3个部分,一是注册输入设备和键值,二是gpio的配置和申请,最后是中断来临后键值的上报流程。linux设备的注册都是固定套路,主要区别还是在于硬件平台的不同需要做不同的处理。static struct input_dev *key_dev;static irqreturn_t key_interrupt(int irq,...
2018-11-25 22:47:09 148
转载 NASA 顶级程序员是如何编程的?这里有十大准则
转自:http://blog.csdn.net/csdnnews/article/details/78527530NASA 的十大编码准则:1、简化控制流程:使用尽可能精简的控制流程构造编写程序 – 不要使用 setjmp 或 longjmp 构造、goto 语句,以及直接或间接的递归调用。2、为循环使用固定次数上限:所有的循环必须有一个固定的上限。 必须可以被某个检测工具
2017-11-17 23:40:50 254
原创 socket
1.socket是一个常用的网络通信API,今天就学习一下多线程配合socket进行通信。服务端server.c#include #include #include #include #include #include #include #include #define SERVERPORT 9009#define BACKLOG 10#defin
2017-10-08 23:37:23 152
原创 poll & epoll & select
select,poll,epoll都是常见的多路复用阻塞函数 #include int poll(struct pollfd fds[], nfds_t nfds, int timeout); #include int select(int nfds, fd_set *restrict readfds,
2017-09-23 11:24:21 159
原创 sem_wait & sem_post
sem_wait 和 sem_post这两个函数经常在线程同步时使用,伴随的还有创建和销毁函数sem_init,sem_destroy#include #include #include #include #include static sem_t sem_t1;static int status = 1;static pthread_t pthread_t1 = -1;st
2017-09-22 22:00:40 1851
原创 signal
signal 是一种类似于中断的软处理机制,今天就来熟悉一下signal和sigaction的使用。#include #include #include #include typedef void (*sighandler_t)(int);static void sig1(int sig){ printf("sig1=%d\n", sig); alarm(1);
2017-09-21 23:01:05 240
原创 time的使用
时间函数使用time,ctime,gmtime_r,localtime_r,gettimeofday#include #include #include #include #include // struct tm {// int tm_sec; /* Seconds (0-60) */// int tm_min; /* Minutes (0-59)
2017-09-19 00:22:38 451
原创 sublime 安装配置
每次重装系统或者啥意外情况就导致编辑器要重新配置,保存下来方便以后使用{ "draw_white_space": "all", //显示空格 "font_size": 15, "highlight_modified_tabs": true, "ignored_packages": [ "Vintage" ], "line_padding_bottom": 2, "lin
2017-09-16 13:14:55 526
原创 daemon
#include #include #include #include void create_daemon_by_self(void){ pid_t pid_t1; int ret = -1; long fd_max = -1; pid_t1 = fork(); //create a new process 创建子进程 if(pi
2017-09-15 23:42:18 180
原创 file stat
int file_stat(){ struct stat stat1; int ret = -1; int file_count = 0; DIR *dir1 = NULL; struct dirent * dirent1 = NULL; memset(&stat1, 0, sizeof(stat1)); ret = stat(FILENAME, &stat1); if(ret
2017-09-13 23:50:50 902
转载 android 添加一个按键键值
1.frameworks/base/data/keyboards/Generic.kl (键盘布局文件添加键值映射,这里的键值对应kernel里面的键值,按键名字对应上层keycodes.h里面定义的按键名字) key 497 GESTURE_WAKELOCK2.frameworks/base/core/res/res/values/attrs.xml enum name=
2017-09-13 11:01:19 414
原创 io
文件读写是一个常见且重要的操作,今天就来熟悉一下文件读写函数read(),open(),write(),fread(),fopen(),fwrite()等操作。#include #include #include #include #include #include #include #define FILENAME "test.txt"int read_write()
2017-09-12 01:35:06 238
原创 makefile 指定文件的生成目录
1.上一篇博客虽然简单实现了自动处理依赖关系,但是生成的各种临时文件都混在一起,太乱了。假定我们的源文件放在src目录,头文件放在inc目录,.o文件放在obj目录,.d文件放在dmk目录,Makefile和上述4个目录为同一级别。则定义如下变量:D_SRC = srcD_INC = -I./incD_OBJ = objD_MK = dmk2.自动遍历src目录下的所有.c
2017-09-09 21:59:17 18089 3
原创 makefile处理源文件对头文件的依赖
1.从HelloWorld开始,假设有如下代码hello.c:#include #include "a.h"#include "b.h"#include "hello.h"int main(int argc, char* argv[]){ printf("hello world.\n"); return 0;}接着上一篇简单理解makefile我们有如下式
2017-09-09 21:13:10 1065
原创 简单理解Makefile
1. 从hello world开始,假设在hello.c中有如下代码#include int main(int argc, char* argv[]){ printf("hello world.\n"); return 0;}2. 把hello.c编译成可执行程序hello可简单分两步执行以下命令,把.c生成.o。 -c表示只编译不链接。gcc -c h
2017-09-06 23:10:58 326
原创 win7下安装Ubuntu16.04及android源码下载,编译
1.下载好Ubuntu-16.04.iso放到C盘根目录,安装好easyBCD 下载地址:http://www.ubuntu.org.cn/download/desktop http://www.onlinedown.net/soft/58174.htm2.打开easyBCD->添加新条目->NeoGrub->安装->配置 在弹出的文本框中输入title
2017-05-16 01:08:11 266
原创 icache操作
mrc p15, 0, r0, c1, c0, 0; //读取cp15的c1到r0中bic r0, r0, #(1orr r0, r0, #(1mcr p15, 0, r0, c1, c0, 0 //写入cp15
2016-12-01 00:33:26 505
原创 使用C汇编
#define WTDCON 0xE2700000#define SVC_STACK 0xD0037D80.global _start_start:ldr r0, =WTDCON //watchdog timer 控制寄存器地址写入r0寄存器ldr r1, =0x0 //赋值0str r1, [r0] //寻址,写0关闭watchdogldr sp, = SVC
2016-11-27 23:10:36 232
原创 led操作
#define GPJ0CON 0xE0200240#define GPJ0DAT 0xE0200244.global _start //声明_start作用域为全局_start:ldr r0, =0x11111111//等号为伪指令,对r0赋值ldr r1, =GPJ0CN //对r1赋值,值为当前开发板GPJ0 Control Register 的地址s
2016-11-27 00:37:01 355
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人