自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(221)
  • 资源 (3)
  • 收藏
  • 关注

原创 个人主要笔记总览

个人笔记总览Linux操作系统笔记总览C语言笔记总览C++笔记总览系统编程笔记

2020-07-01 21:00:20 725

原创 【C#WinForm子窗体调用父窗体的控件-textBox举例】

最近学习委托的时候遇到一个比较有意思的功能,正常情况下子父窗体间通信比较困难,这时可以使用委托,来进行子父窗体间通信。首先在父窗体上绘制一个textbox和一个buttom然后创建子窗体:选择窗体添加:再添加一个textbox和buttom如下:然后实现子窗体发送textbox里的内容给父窗体的textbox显示。

2023-03-09 14:32:43 1515 1

原创 C#已知三个点,求圆心和半径

C#已知三个点坐标,求圆心坐标和半径

2023-02-04 09:38:23 733

原创 【工业视觉-CCD相机和CMOS相机成像的本质区别】

通过CCD与CMOS成像区别展示,阐述两者其他区别

2023-02-03 15:18:10 4896

原创 【halcon学习-读图像和遍历文件下图像】

halcon遍历读图

2023-02-02 10:02:02 1029

原创 【halcon练习-苹果logo偏移角度计算】

【代码】【halcon练习-苹果logo偏移角度计算】

2023-01-31 15:49:16 391

原创 类似背包问题,允许超过容量的最小价值

第一行输入n和m,代表物品个数和最大容量余下n行输入n组物品v w代表物品的价值和容量输出物品能超出一定容量的最小价值和其容量例如输入6 370025 360022 180010 9006 6004 3001 60输出27 3720#include <cstdio>#include <cstring>#include <algorithm>#define ll long long const int inf = 0x3f3f3

2021-04-01 17:29:21 966 4

原创 在 Ubuntu 20.04 上安装 golang

下载 Go 压缩包以 root 或者其他 sudo 用户身份运行下面的命令,下载并且解压 Go 二进制文件到/usr/local目录:wget -c https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local调整环境变量通过将 Go 目录添加到$PATH环境变量,系统将会知道在哪里可以找到 Go 可执行文件。这个可以通过添加下面的行到/etc/profile文件(系统范围内安.

2020-11-20 16:28:18 4391 1

原创 opencv学习-013-几何形状绘制(绘制直线line,绘制矩形rectangle,绘制圆circle,绘制椭圆ellipse)

opencv学习-013-几何形状绘制(绘制直线,绘制圆,绘制矩形,绘制椭圆)1. line2. rectangle3. circle4. ellipse#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;int main(int argc, char** argv) { Mat image = Mat::zeros(Size(512, 512), C

2020-10-27 17:58:54 771

原创 opencv学习-012-图像翻转(flip)

opencv学习-012-图像翻转(flip)flip这一节比较简单,就是图像的水平和镜像翻转。#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;int main(int argc, char** argv) { Mat src = imread("E:/Desktop/y.jpg"); if (src.empty()) { printf("

2020-10-23 16:54:10 1345

原创 opencv学习-011-图像像素归一化(normalize)

opencv学习-011-图像像素归一化(normalize)#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int argc, const char *argv[]){ Mat src = imread("E:/Desktop/y.jpg"); if (src.empty()) { printf("could not

2020-10-22 20:53:05 4068

原创 opencv学习-010-图像像素值统计和二值图像采用阈值的一种方法(minMaxLoc,meanStdDev)

opencv学习-010-图像像素值统计(minMaxLoc,meanStdDev)#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int argc, const char *argv[]){ Mat src = imread("E:/Desktop/y.jpg", IMREAD_GRAYSCALE); if (src.em

2020-10-19 22:24:14 663

原创 opencv学习-009-图像色彩空间转换(cvtColor,inRange)

opencv学习-009-图像色彩空间转换(cvtColor,inRange)1. 色彩空间和cvtColor2. inRange()#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int argc, const char *argv[]){ Mat src = imread("E:/Desktop/y.jpg"); if

2020-10-19 16:41:04 603

原创 opencv学习-008-图像通道的分离与合并(split ,merge )

opencv学习-008-图像通道的分离与合并(split ,merge )1. split2. merge#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int argc, const char *argv[]){ Mat src = imread("E:/Desktop/y.jpg"); if (src.empty()

2020-10-19 14:58:56 773

原创 opencv学习-007-伪色彩函数applyColorMap和LUT

opencv学习-007-伪色彩函数applyColorMap和LUT1. 伪色彩函数`applyColorMap`2. Look Up Table(LUT)查找表#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;void customColorMap(Mat &image);int main(int argc, const char *a

2020-10-19 14:23:38 775

原创 opencv学习-006-图像像素的逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)

opencv学习-006-图像像素的逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)1. 图像处理常用的与、或、异或2. Rect 类#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int argc, const char *argv[]){ // create ima

2020-10-18 21:19:48 752

原创 opencv学习-005-图像基于像素的算数操作(加add、减subtract、乘multiply、除divide的API,Scalar,addWeighted)

opencv学习-005-图像基于像素的算数操作(加add、减subtract、乘multiply、除divide的API)1. 利用加减法和Scalar生成的单色图像可以实现调整图像亮度的作用2. 通过`addWeighted`调整图像亮度与对比度#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int artc, char**

2020-10-18 17:37:26 838

原创 opencv学习-004-图像像素的读写操作(Mat.at方法,案例实现图像的颜色反转(数组遍历和指针方式遍历))

opencv学习-004-图像像素的读写操作和一些算术运算(案例实现图像的颜色反转(数组遍历和指针方式遍历))1. 通道2. Vec3b类型3. 指针方式遍历中的要点#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int artc, char** argv) { Mat src = imread("E:/Desktop/y.j

2020-10-18 16:40:56 1425 1

原创 opencv学习-003-图像Mat类型对象的拷贝、赋值和创建(.clone(),.copyTo(),Mat::zeros,Mat::ones)

opencv学习-003-图像对象的拷贝、赋值和创建(.clone(),.copyTo(),Mat::zeros,Mat::ones)1. 先来说代码里m1,m2,m31. 先来说代码里m4,m5,m63. 卷积核的创建#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int artc, char** argv) { Mat s

2020-10-18 14:57:02 1261

原创 opencv学习-002-图像颜色空间转换和保存(cvtColor、imwrite)

opencv学习-002-图像色彩空间转换和保存(cvtColor、imwrite)1. 颜色空间转换函数- cvtColor2. 图像保存 - imwrite这一节我们的需求是对图片进行颜色转换然后再把其保存在特定目录下:#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int artc, char** argv) { Ma

2020-10-17 16:46:29 1171

原创 opencv学习-001-图像读取与显示(imread、imshow,nameWindow,Mat类)

opencv学习-001-图像读取与显示(imread、imshow,nameWindow,Mat类)1. `imread`函数:2. `imshow`函数:3. `nameWindow`函数4. `Mat`类这一节是图像的读取和显示,先上代码和结果,再解释其中重要部分:#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;const char* w

2020-10-17 16:00:47 1084

原创 opencv学习

opencv学习导语看了看自己的博客,竟然已经一个月没有更了。由于前一阵子一直在找工作,现在三方也签了,工作岗位是C++开发,然后主要做图像算法一类的。博主研究生在校期间研究方向也是图像处理,由于本人是个学渣,也没好好学opencv,现在由于以后工作需要和论文需要,打算接下来几个月抽空把opencv的API过一遍,然后分享出来大家一起学习。首先布置环境,之前博客里也写到了,就是:安装VS2015和opencv4把环境配置好之后就开始我们的学习吧!...

2020-10-15 21:56:01 382 2

原创 TCP通信过程中time_wait和close_wait产生过多的原因和解决方法

TCP通信过程中time_wait,和close_wait产生过多的原因和解决方法1. time_wait过多产生原因2.time_wait过多解决方法3.close_wait过多原因4.close_wait过多的解决方案1. time_wait过多产生原因  正常的TCP客户端连接在关闭后,会进入一个TIME_WAIT的状态,持续的时间一般在1-4分钟,对于连接数不高的场景,1-4分钟其实并不长,对系统也不会有什么影响,  但如果短时间内(例如1s内)进行大量的短连接,则可能出现这样一种情况:客户

2020-09-17 18:10:19 15797 1

原创 声网09-15,求1-n的最大公约数gcd

声网09-15,求1-n的最大公约数今天声网25个选择+2编程题,题目全是英文,这道题是第二题。题目描述大致是输入T组数据,每一组是一个数字n,输出每一个数n其从1到n的最大公约数gcd最大值,举个例子,求3的gcd最大值,也就是求gcd(1,2),gcd(1,3),gcd(2,3)的最大值输入形式:235输出形式:12思路:  首先想到的是暴力做法,定义一个求最大公约数的函数,然后针对每一个数用双指针两层遍历循环求gcd,然后保存其最大值,但是提交不通过显示超时(当时数据规模记不得

2020-09-15 22:15:07 732 1

原创 给定一个无序数组,求第K大的数,要求不能使用额外的空间,时间复杂度尽量低

给定一个无序数组,求第K大的数,要求不能使用额外的空间,时间复杂度尽量低今天快手面试,面试官问我对各种排序算法了解吗,我说了解,然后他给我出了一道题,给定一个无序数组,求第K大的数,要求不能使用额外的空间,时间复杂度尽量低,当时有点懵…我能想到的只能是用数组滚动遍历一遍,时间复杂度为O(n),空间复杂度也O(n)…或者排序再遍历,实在想不出,面试官给了一个思路:使用分治和快排的思想,这才恍然大悟。贴上代码:#include <bits/stdc++.h>using namespace

2020-09-14 23:52:04 612

原创 关于判断递归的时间复杂度总结

关于判断递归的时间复杂度总结若每次递归使问题的规模减半,而其他操作都是常数时间T(N)=T(N/2)+O(1), 则T(N)=O(logN)若每次递归使用问题的规模减1,而其他操作是常数时间T(N)=T(N-1)+O(1),则T(N)=O(N)若每次递归使问题的规模减半,而其他操作是线性时间T(N) = T(N/2)+O(N),则T(N)=O(NlogN)...

2020-09-11 15:11:37 1358

原创 leetcode面试题 16.25. LRU缓存——LRU最近最少使用算法

leetcode面试题 16.25. LRU缓存——LRU最近最少使用算法首先介绍下LRU  LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。  因为我们是对缓存进行操作,那么久要求时间复杂度尽可能的低,那么我们就可以查找有无此key的时候用哈希表进行查找,

2020-09-07 13:49:13 627

原创 C++11新特性,推荐使用emplace_back()替换push_back()的原因

@TOCc++11新加入了emplace_back()用来替换push_back():在平时我们习惯性的尾插用push_back()去完成,但是如果是尾插临时对象的话,push_back()需要先构造临时对象,再将这个对象拷贝到容器的末尾,而emplace_back()则直接在容器的末尾构造对象,这样就省去了拷贝的过程。分析如下代码:#include<bits/stdc++.h>using namespace std;int i=0,j=0;class A {public:

2020-08-31 14:59:34 4995 1

原创 C++11特性之右值引用及完美转发

C++11特性之右值引用及完美转发1. 左值与右值2. 左值引用和右值引用3. 完美转发1. 左值与右值首先简明扼要地介绍下左值和右值右值:只能在=右边的值。左值:可以在=左边的值。右值不能在=左边。左值也可以在=右边。例如:int n = 1;string s = "Hello World";const float PI = 3.1415926535;const float PI_2 = PI * 2;string t = string("abc");上面这些n,s,PI,

2020-08-31 14:31:47 1328 1

原创 一文入门Shell,学完就能看懂别人写的Shell

Shell编程初步1. Shell概念1. Shell概念

2020-08-28 00:06:17 1026 3

原创 从labuladong东哥那里看到的位运算小技巧

从labuladong东哥那里看到的位运算小技巧1. 利用或操作 `|` 和`空格`将英文字符转换为小写2. 利用与操作 `&` 和`下划线`将英文字符转换为大写3. 利用异或操作 `^` 和`空格`进行英文字符大小写互换4. 判断两个数是否异号5. 不用临时变量交换两个数6. n&(n-1)用来消除数字 n 的二进制表示中的最后一个 17. 判断一个数是不是 2 的指数8. 查找只出现一次的元素9. n>>1表示n/2,n<<1表示n*2就不细说了说实话,最近做题

2020-08-23 17:52:03 1165 1

原创 Leetcode——二叉树的前序(第144题)、中序(94)、后序(145)、层序遍历(102)的递归和迭代写法总结

Leetcode——二叉树的前序(第144题)、中序(94)、后序(145)、层序遍历(102)的递归和迭代写法总结1. 给定一个二叉树,返回它的 前序 遍历。2. 给定一个二叉树,返回它的 中序 遍历。3. 给定一个二叉树,返回它的 后序 遍历。4. 给定一个二叉树,返回它的 层序 遍历。二叉树定义/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;

2020-08-22 14:40:45 444

原创 Lua执行make linux test报错fatal error: readline/readline.h: No such file or directory解决方法

Lua执行make linux test报错fatal error: readline/readline.h: No such file or directory解决方法最近在学习Lua,根据菜鸟上的教程步骤进行安装:curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gztar zxf lua-5.3.0.tar.gzcd lua-5.3.0sudo make linux testsudo make install执行到sudo make lin

2020-08-21 11:34:25 2131

原创 经典背包问题3——背包问题求方案数 、背包问题求具体方案

经典背包问题3——背包问题求方案数 、背包问题求具体方案1. 背包问题求方案数2. 背包问题求具体方案1. 背包问题求方案数有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 最优选法的方案数。注意答案可能很大,请输出答案模 109+7的结果。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N行,每行两个整数 vi,wi,用空格隔

2020-08-20 00:38:20 2337

原创 经典背包问题2——混合背包问题、二维费用的背包问题、分组背包问题

经典背包问题2——混合背包问题、二维费用的背包问题、分组背包问题1. 混合背包问题2. 二维费用的背包问题3. 分组背包问题1. 混合背包问题有 N 种物品和一个容量是 V的背包。物品一共有三类:第一类物品只能用1次(01背包);第二类物品可以用无限次(完全背包);第三类物品最多只能用 si次(多重背包);每种体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和

2020-08-19 14:42:45 611

原创 leetcode 思路——64. 最小路径和——174. 地下城游戏

leetcode 思路——64. 最小路径和——174. 地下城游戏64. 最小路径和174. 地下城游戏64. 最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。动态规划思路:我们可以设dp[i][j]的意思为到达第i行第j列的最短路径和依次从左到右,从

2020-08-17 23:25:10 409

原创 leetcode 思路——300. 最长上升子序列

leetcode 思路——300. 最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。动态规划思路:确定状态,dp[i]为0到第i个子序列的最长上升的长度;我们先固定右端点(右端点也要慢慢往右移),然后根据右端点,找出左端点到

2020-08-17 18:07:31 455

原创 C++两种情况实现简洁的死锁程序

C++实现简洁的死锁程序1.单线程对一个资源重复申请上锁的情况2. 两个线程对两个资源申请上锁,形成环路。1.单线程对一个资源重复申请上锁的情况#include <iostream>#include <thread>#include <mutex>#include <unistd.h>using namespace std;int data = 1;mutex mt1,mt2;void a2() { data = data * dat

2020-08-11 12:02:45 1542

原创 C++可重入函数和不可重入函数

C++可重入函数和不可重入函数可重入函数是指能够被多个线程“同时”调用的函数,并且能保证函数结果正确不必担心数据错误的函数。不可重入函数是指不能运行在多任务环境下,除非能保证互斥的函数。由于使用了未受保护的系统资源,如全局变量区,中断向量表等。不可重入函数在实时系统设计中被视为不安全函数。可重入函数特点:没有静态数据结构不返回指向静态数据的指针所有函数数据由函数的调用者提供使用auto变量,或通过全局变量的拷贝来保护全局变量若必须访问全局变量,则利用互斥信号保护不调用不可重入函

2020-08-09 21:38:02 1889

原创 C++11中的原子操作(atomic operation)和自旋锁

C++11中的原子操作(atomic operation)1. 原子操作2. 自旋锁3. 原子操作和使用互斥锁和自旋锁的速度对比1. 原子操作  所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。  我们在原子操作之前在多线程同步中防止发生数据竞争的操作是加互斥锁,但互斥锁是操作系统这一层级的,最终映射到CPU上也是一堆指令,是指令就必然会带来额外的开销;既然CPU指令是多线程不可再分的最

2020-08-09 21:11:29 2876

EM&K-means_Cluster segmentation.zip

两种算法:1.使用EM算法对3通道彩色图片进行聚类分割,给出误差; 2.使用K-means算法对3通道彩色图片进行聚类分割,给出误差。 两者都需要输入聚类个数的数组,实现分割。

2021-03-13

GMM_Clustering .m

MATLAB程序。选择图片,选择要聚类的K值(聚类数),使用高斯混合模型聚类对3通道彩色图像进行分割

2021-03-13

thread_pool.c

利用生产者-消费者模式,领导者-追随者模式实现线程池的动态增加删减实现多线程任务,main函数可自定义线程池最大和最小个数,任务队列的个数

2020-07-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除