自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (2)
  • 收藏
  • 关注

原创 opencv图像畸变矫正:源码学习

opencv提供了直接进行畸变矫正的代码,因在项目中需要使用畸变矫正,因此研究一下opencv中畸变矫正的相关接口与代码,便于学习提升与二次开发。

2023-06-08 23:41:26 2268 1

原创 ISP算法学习之插值算法

差值算法作为一种最常用的算法,在图像放大、旋转等多种变换中都有用到。由于图像进行某种变换后新的图像的像素并非完全和原始图像的像素一一对应,所以导致新的图像中会出现很多“空穴”,这是就需要对这些“空穴”进行填补。所谓插值算法也就是填补的方式。本文主要通过造轮子的方式通过图像放大来介绍三种最常见的插值算法:邻域插值、双线性插值和双三次插值。

2023-05-07 11:09:20 210

原创 ISP算法学习之LSC(镜头阴影校正)

LSC(Lens Shading Correction)是ISP算法中的一个重要组成部分,用于校正镜头遮挡(lens shading)现象。镜头遮挡是由于镜头和图像传感器的光学特性导致的图像亮度不均匀的现象。通常,图像的中心部分较亮,而边缘部分较暗。LSC算法的目标是通过校正这种亮度不均匀,使得图像在整个视场中具有相同的亮度水平。

2023-05-04 23:17:50 3797 2

原创 ISP算法学习之BLC(黑电平校正)

BLC——black level correction黑电平校正

2023-05-03 22:44:42 2072

原创 ISP算法学习之ISP Pipeline

闲来无事,学习一下ISP的相关算法,并在此记录。

2023-04-27 23:15:28 4156 1

原创 C++设计模式——八个原则

C++设计模式的八个原则

2023-01-12 21:12:41 756

原创 硕士期间学习总结

将研究生期间学习的主要科目、书籍、内容总结,希望能给想从事机器视觉、图像处理等计算机相关岗位的师弟师妹们带来帮助。

2023-01-12 20:46:25 150

原创 NC17 最长回文子串

题目描述:对于一个字符串(仅包含小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。示例:输入:"abcab", 5 返回值:1 输入:"abbba", 5返回值:5解题思路:采用暴力求解,截取所有可能存在的字符串,判断其是否符合互文 int getLongestPalindrome(string A, int n) { // write code here in...

2021-09-28 20:41:19 129

原创 NC16 判断二叉树是否对称

题目描述:给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)题目示例:例如:下面这棵二叉树是对称的1/ \2 2/ \ / \3 4 4 3下面这棵二叉树不对称。1/ \2 2\ \3 3解题思路:因为我们比较的是两个子树是否对称,所以可以用递归的方法。 bool isSymmetric(TreeNode* root) { // write code here bool ans = true...

2021-09-25 14:23:44 57

原创 NC15 求二叉树的层序遍历

题目描述:给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)题目示例:该二叉树层序遍历的结果是 [ [3], [9,20], [15,7] ]解题思路:层序遍历可以利用队列实现。首先将根节点加入队列,依次弹出队首,并将队首节点的左右子节点依次加队尾。依次循环,直至队列为空,即完成对二叉树的层序遍历。注意要设置一变量来判断遍历的层数。C++代码实现如下: vector<vector<int> > levelOrder(TreeNode.

2021-09-25 11:30:29 71

原创 NC14 按之字形顺序打印二叉树

题目描述:给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)示例:该二叉树之字形层序遍历的结果是 [ [1], [3,2], [4,5] ]解题思路:我们可以先了解一下二叉树的层序遍历,可以采用数据结构的堆来实现,可利用容器queue。首先将根结点加入队首,之后依次执行将队首的左右子节点加入队尾,并将队首pop弹出,直到队列为空。 之字形的层序遍历与上述方法相似,此处的想法是可以借助两个栈结构来实现。两个栈分...

2021-09-24 08:57:45 54

原创 NC13 二叉树的最大深度

题目描述:求给定二叉树的最大深度,深度是指树的根节点到任一叶子节点路径上节点的数量。最大深度是所有叶子节点的深度的最大值。解题思路:利用递归,遍历全二叉树,可得到每个结点的深度,记录最大结点深度即可。(本代码使用先序遍历)。 void pre(TreeNode *root,int &deep,int &maxDeep) { if(root==nullptr) return; deep++; dee

2021-09-23 19:13:27 94

原创 NC12 重建二叉树

题目描述:给定某二叉树的前序遍历和中序遍历,请重建出该二叉树并返回它的头结点。示例:例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。解题思路:在解决这题之前,我们需要知道如何从前序遍历序列和中序遍历序列中重见二叉树。简要步骤如下:1.前序遍历的首个元素{1,2,4,7,3,5,6,8}作为二叉树的根节点。2.在中序序列中找到第一次这个元素出现的地方{4,7,2,1,5,3,8,6}。3.将中序遍历序列分割

2021-09-18 11:24:08 67

原创 NC11 将升序数组转化为平衡二叉搜索树

题目描述:给出一个升序排序的数组,将其转化为平衡二叉搜索树(BST)题目示例:输入:[-1,0,1,2] 输出:[1,0,2,-1]解题思路:二叉搜索树的特点就是左子树都小于根节点,右子树都大于根节点。因此我们可以采用二分法寻得数组中点作为根节点,左半边构建左子树,右半边构建右子树。同时依据示例可以判断数组为偶数个时,要选取右半边的第一个为根节点。代码实现如下: TreeNode* sortedArrayToBST(vector<int>& n...

2021-09-18 10:37:57 91

原创 NC10 大数乘法

题目表述:以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回。(字符串长度不大于10000,保证字符串仅由'0'~'9'这10种字符组成)解题思路:首先需要生成一个可以容纳最终答案长度的字符串(两数相乘,位数一定不对大于两个乘数的位数和)。下面利用循环来模拟一个数字依次从低位乘向另一个数字,每一个步骤都可以用之前生成的字符串来标记。一次循环结束就可以得出答案。具体实现可以参考代码(附逐步讲解)。 string solve(string s, string t)

2021-09-16 20:57:16 90

原创 NC9 二叉树中是否存在节点和为指定值的路径

题目表述:给定一个二叉树和一个值\ sumsum,判断是否有从根节点到叶子节点的节点值之和等于sum的路径。示例:给出如下的二叉树,sum=22,返回true,因为存在一条路径5→4→11→2的节点值之和为 22解题思路:此题和NC8解题思路相同,一个需要返回所有路径,一个只需要判断路径是否存在。设置一个状态变量,利用先序遍历实现。当每遍历到一个节点时,计算根节点到当前结点的路径和。当遍历到根节点时,判断路径的和是否等于要求数值,相等则直接状态量标位true后返回;当遍历结...

2021-09-16 16:25:25 115

原创 C++ 灰度图像伪彩色处理

真彩色是指影像中的物体颜色和人类肉眼所见的颜色非常相似。在黑白影像中全彩则是指物体的明亮程度。但因为颜色染料等媒体的化学等性质和人类肉眼不同,因此不可能得到绝对的真彩色。 伪彩色的概念就是相较于真彩色提出来的。对于灰度图像,我们可以依据不同像素点的灰度阶数不同,对R、G、B三个通道进行不同规律的赋值,并将三个通道融合组成一幅伪彩色图像。 下面介绍一种常见的基于灰度值阶数不同而实现的伪彩色映射。其将256阶灰度阶数分为四段,分别对应R、G、B三通道下的不同映...

2021-09-15 17:42:06 2578

原创 NC8 二叉树根节点到叶子节点和为指定值的路径

题目描述:给定一个二叉树和一个值sum,请找出所有的根节点到叶子节点的节点值之和等于sum的路径。示例:例如上图,sum=22,则要求的返回值为:[ [5,4,11,2], [5,8,9] ]解题思路:利用先序遍历实现。当每遍历到一个节点时,将当前的结点数值加入到路径中。当遍历到根节点时,判断路径的和是否等于要求数值,相等则返回路径。 vector<vector<int>> pathSum(TreeNode* root, int sum) {...

2021-09-15 16:45:38 58

原创 NC7 买卖股票的最好时机

题目表述:假设你有一个数组,其中第i个元素是股票在第i天的价格。你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。解题思路:利益最大化就是在最低点买进,在最高点卖出。要注意卖出需要在买入之后。在遍历过程中记录下当前位置遇到的最低点的价格。同时记录每天的价格前去之前的最低价,如果收益增加则保留。 int maxProfit(vector<int>& prices) { // write code her..

2021-09-15 16:02:03 63

原创 NC6 二叉树的最大路径和

题目表述:给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。这个路径的开始节点和结束节点可以是二叉树中的任意节点。解题思路:首先分析每一个节点可能存在地情况。一共分为四种。第一种是左右两个结点都是负数,返回结点本身。第二种情况是保留节点本身和左节点。第三种情况是保留节点本身和右节点。第四种情况是同时保留节点本身和左右结点。设置一个最小整数进行判断,同时递归保留所有可能的最大路径。 int maxPathSum(TreeNode* root) {

2021-09-15 15:37:23 65

原创 NC5 二叉树根节点到叶子节点的所有路径和

题目描述:给定一个仅包含数字0−9的二叉树,每一条从根节点到叶子节点的路径都可以用一个数字表示。例如根节点到叶子节点的一条路径是1→2→3,那么这条路径就用123来代替。找出根节点到叶子节点的所有路径表示的数字之和示例:这颗二叉树一共有两条路径,根节点到叶子节点的路径 1→2用数字12代替,根节点到叶子节点的路径1→3用数字13代替,所以答案为12+13=25。解题思路:利用先序遍历二叉树,记录下每一层的路径值,每遍历一个节点,都要重新计算当前结点的值,在叶子节点时则将值保...

2021-09-14 19:28:26 105

原创 NC4 判断链表中是否有环

题目描述:判断给定的链表中是否有环。如果有环则返回true,否则返回false。解题思路:利用快慢指针解决,如果链表存在闭环,两个指针一定会相遇。bool hasCycle(ListNode *head) { if(head == NULL) return false; ListNode *fast = head; ListNode *slow = head; while(fast!=NULL&&fast->ne

2021-09-14 18:52:59 42

原创 NC3 链表中环的入口结点

题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。解题思路:利用快慢指针同时从A点出发,相遇时慢指针走过的距离是X+Y,快指针则是2(X+Y),为A到B到C到B到C,可以算出像一点到起点的位置是X,此时将快指针重新指向结点头部,与第一次相遇的结点相同速度出发,相遇结点为入口结口。ListNode* EntryNodeOfLoop(ListNode* pHead) { ListNode *fast = pHead...

2021-09-14 16:21:32 66

原创 NC2 重排链表

题目表述:将给定的单链表L:L_0→L_1→…→L_{n-1}→L_ nL0​→L1​→…→Ln−1​→Ln​重新排序为:L_0→L_n →L_1→L_{n-1}→L_2→L_{n-2}→…L0​→Ln​→L1​→Ln−1​→L2​→Ln−2​→…要求使用原地算法,不能只改变节点内部的值,需要对实际的节点进行交换。示例:输入:{1,2,3,4} 返回值:{1,4,2,3}给定head链表1->2->3->4, 重新排列为 1->4->2->3,会...

2021-09-14 15:58:47 93

原创 NC1 大数加法

题目表述:以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)示例:string solve(string s, string t) { // write code here int length = s.length()>t.length()?s.length()+1:t.length()+1; string temp_zaros(.

2021-09-14 15:47:42 50

原创 OpenCV Mat类型转化为QImage

在QT中做项目时如果需要对图像进行处理,经常需要用到Mat类型与QImage类型的项目转换。我最近在利用QT做的视频处理,应用的是VideoCapture类,最后在现实环节需要转换成QImage类型。视频流态的处理,对单帧的响应速度要求较高,一开始我也是直接用的别人的函数,最后发现Mat转QImage时间太长,做了一个小改进。2592*2048*3的图像的转换速度从平均50ms变成10ms(i5-9300H)。原因主要OpenCV的BGR类型与QImage的RGB类型不同造成,因此在转换时需...

2021-09-07 19:25:45 1766 4

原创 基于智能手机的光谱仪设计

博主今年参加了光电设计大赛,做的题目是基于智能手机苹果糖度检测。我的整体思路是利用智能手机搭建出一个红外光谱检测系统,利用红外光对不同成分物质有不同吸收率的特征来实现的。在这里给大家分享一下我的基于智能手机的光谱仪设计。 我的主要思路是利用3D打印,设计出光谱仪的外壳,其主要作用是实现分光,最终利用手机元成像系统得出图像,并对图像处理得出光谱数据。 下面先给大家看一下装置的整体结构,后面再一一分析:色散系统是光谱仪的核心。色散系统将决定...

2021-09-06 20:29:27 2915 4

原创 Opencv读取保存视频中遇到的一个问题

最近的一个项目在利用opencv做一个视频的实时图像处理。发现在调用相机时对视频进行的单帧处理时间与保存在本地的视频进行单帧处理的时间不一致,处理时间相差三倍,最后发现是读写视频造成图像的通道数不一样导致的。 从相机中我读取的视频是单通道的灰度图,是对单通道图像进行的处理。 在使用cv::VideoWriter类将视频保存到本地,并使用从cv::VideoCapture类读取视频时,读取到的单帧图片从CV_8UC1转换成了CV_8UC4,因此相应的处理时间...

2021-09-05 15:54:20 507

原创 QT实现图片的操作(缩放、平移、绘图、对比度及亮度调节)

因为项目需求,在处理视频流的同时需要对单帧的图片实现一些简单的处理,尝试写了一个这样的demo。 本程序实现的主要功能如下:(1)实现了对加载图片的缩放与平移(2)在加载的图片上进行一些简单的标记绘图(矩形和圆圈工具),并实现撤回功能(3)利用OpenCV对图片进行对比度和亮度的调节界面展示:我主要是通过重写QLabel来实现的,下面附上我们的几个主要功能代码:(完整代码见最后) (1)加载图片LocalFileNa...

2021-08-08 09:32:43 3025 4

微型计算机原理与接口技术第四版吴宁课后习题答案

微型计算机原理与接口技术第四版吴宁课后习题答案,目前最完整的一到八章的所有答案解析

2022-05-04

安卓:camera类相机自定义开发

实现了调用系统相机和Camera类的自定义开发

2021-04-29

空空如也

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

TA关注的人

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