<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[IcdKnight的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/IcdKnight</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; IcdKnight]]></copyright><item><title><![CDATA[使用opencv读取vlc生成的rtsp视频流]]></title><link>https://blog.csdn.net/IcdKnight/article/details/116331977</link><guid>https://blog.csdn.net/IcdKnight/article/details/116331977</guid><author>IcdKnight</author><pubDate>Sat, 01 May 2021 18:06:32 +0800</pubDate><description><![CDATA[使用opencv读取vlc生成的rtsp视频流
视频读取封装成一个类，在主函数中创建线程并调用。
demo.py
import cv2
from lib import start
import threading

if __name__ == '__main__':
    image_list = []
    t = threading.Thread(target=start, args=(image_list, ))
    t.start()
    while True:
        if ]]></description><category></category></item><item><title><![CDATA[空洞卷积感受野的正确计算方法]]></title><link>https://blog.csdn.net/IcdKnight/article/details/116330830</link><guid>https://blog.csdn.net/IcdKnight/article/details/116330830</guid><author>IcdKnight</author><pubDate>Sat, 01 May 2021 17:53:09 +0800</pubDate><description><![CDATA[空洞卷积感受野的正确计算方法空洞卷积介绍计算误区正确的计算方法
空洞卷积介绍
空洞卷积（dilated convolution）是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。 利用添加空洞扩大感受野，让原本3x3的卷积核，在相同参数量和计算量下拥有5x5（dilated rate =2）或者更大的感受野，从而无需下采样。
具体是在普通卷积中间填充不参与卷积运算的空洞的结构。对于dilation rate=2，3×3大小的卷积核来说，其卷积过程如下图所示。由图可以看到，其等效的]]></description><category></category></item><item><title><![CDATA[剑指offer刷题笔记]]></title><link>https://blog.csdn.net/IcdKnight/article/details/116327992</link><guid>https://blog.csdn.net/IcdKnight/article/details/116327992</guid><author>IcdKnight</author><pubDate>Sat, 01 May 2021 11:38:35 +0800</pubDate><description><![CDATA[传送门：https://github.com/JamesSUDO/toward-offer
本人在牛客网剑指offer专题的刷题记录，包括有《剑指offer》的刷题笔记和源码，每个题都有对应的md文件和cpp文件。

]]></description><category></category></item><item><title><![CDATA[使用cocoapi遇到的坑及爬坑记录]]></title><link>https://blog.csdn.net/IcdKnight/article/details/113780911</link><guid>https://blog.csdn.net/IcdKnight/article/details/113780911</guid><author>IcdKnight</author><pubDate>Wed, 10 Feb 2021 16:03:34 +0800</pubDate><description><![CDATA[使用cocoapi遇到的坑及爬坑记录问题一：模型评估阶段，数据类型不匹配问题二：模型评估阶段，读取预测结果时传的列表为空
因为在做基于coco数据集的实验，近期又幸运地薅了老师一台服务器，搬运一波代码配好环境之后发现在服务器上使用coco自带的api做evaluation的时候报错了，卡了好久才把问题都解决。以下是遇到的两个问题以及爬坑的记录。
问题一：模型评估阶段，数据类型不匹配
错误信息
TypeError: object of type &lt;class ‘numpy.float64’&gt; ca]]></description><category></category></item><item><title><![CDATA[OC语法之浅谈block]]></title><link>https://blog.csdn.net/IcdKnight/article/details/107641742</link><guid>https://blog.csdn.net/IcdKnight/article/details/107641742</guid><author>IcdKnight</author><pubDate>Tue, 28 Jul 2020 21:27:40 +0800</pubDate><description><![CDATA[OC语法之浅谈blockblock基本介绍block应用场景block直接使用声明和定义分开声明和定义放一起block作属性block作方法的参数block作返回值完整demo示例
block基本介绍
block对象是一段代码，和C语言函数类似，都是在一个花括号内的一套指令，但是它没有函数名，相应位置只有一个^ 符号，^ 表示这段代码是一个block对象。下面是一个block示例：
^{
	NSLog(@"这是一个block语句");
}

我们可以简单理解为函数指针，即代码块的内存地址。block常用作传]]></description><category></category></item><item><title><![CDATA[剑指offer 45：把数组排成最小的数]]></title><link>https://blog.csdn.net/IcdKnight/article/details/105908376</link><guid>https://blog.csdn.net/IcdKnight/article/details/105908376</guid><author>IcdKnight</author><pubDate>Sun, 03 May 2020 20:46:35 +0800</pubDate><description><![CDATA[把数组排成最小的数题目描述我的解法1：暴力法我的解法2：自定义比较规则+排序
题目描述
输入一个正整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。例如输入数组{3，32，321}，则打印出这三个数字能排成的最小数字为321323。
我的解法1：暴力法
直接遍历所有可能的结果，找出最小值。具体流程是先用二维数组储存所有可能的排列结果，然后遍历所有结果找出最小值，最后...]]></description><category></category></item><item><title><![CDATA[C++ 类中使用多线程]]></title><link>https://blog.csdn.net/IcdKnight/article/details/105663944</link><guid>https://blog.csdn.net/IcdKnight/article/details/105663944</guid><author>IcdKnight</author><pubDate>Wed, 22 Apr 2020 12:07:40 +0800</pubDate><description><![CDATA[做项目的时候，应项目对接方的要求，需要在封装的类中启动线程，于是在定义一个成员函数startWork()负责线程的定义使用std::thread，结果程序报错，程序如下：
#include &lt;iostream&gt; 
#include &lt;thread&gt;
#include &lt;windows.h&gt;
#include &lt;string&gt;

using names...]]></description><category></category></item><item><title><![CDATA[Leetcode 53：最大子序和]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104986951</link><guid>https://blog.csdn.net/IcdKnight/article/details/104986951</guid><author>IcdKnight</author><pubDate>Fri, 20 Mar 2020 12:44:55 +0800</pubDate><description><![CDATA[目录题目描述我的解法：双层循环暴力法动态规划分治算法贪心算法
题目描述
给定一个整数数组 nums ，找到一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大，为 6。

进阶:
如果你已经实现复杂度为 O(n) 的解法，尝试使用更为精妙的分治法求解。
...]]></description><category></category></item><item><title><![CDATA[C++关于自动构造对象的隐式类型转换]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104950715</link><guid>https://blog.csdn.net/IcdKnight/article/details/104950715</guid><author>IcdKnight</author><pubDate>Wed, 18 Mar 2020 18:39:39 +0800</pubDate><description><![CDATA[关于C++的隐式类型转换有好几种，这篇博客解释一下其中的一种，就是当形参是对象时自动构造的一个例子。
学习时看到一道问答题，问的是请说一说隐式类型转换，看到其中的一个转换是这样的：对于只存在单个参数的构造函数对象构造来说，函数调用可以直接使用该参数传入，编译器会自动调用其构造函数生成临时对象。为了验证一下，写了个测试的demo，代码如下所示：
#include &lt;iostream&gt;
#...]]></description><category></category></item><item><title><![CDATA[Leetcode 121：买卖股票的最佳时机]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104941529</link><guid>https://blog.csdn.net/IcdKnight/article/details/104941529</guid><author>IcdKnight</author><pubDate>Wed, 18 Mar 2020 18:03:46 +0800</pubDate><description><![CDATA[目录题目描述我的解法：两层迭代器循环的暴力法运行超时正确解法：一次遍历，记录每次循环的最小值
题目描述
给定一个数组，它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易（即买入和卖出一支股票一次），设计一个算法来计算你所能获取的最大利润。
注意你不能在买入股票前卖出股票。
示例 1:
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天（股票价格 = ...]]></description><category></category></item><item><title><![CDATA[Leetcode 70：爬楼梯]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104902902</link><guid>https://blog.csdn.net/IcdKnight/article/details/104902902</guid><author>IcdKnight</author><pubDate>Mon, 16 Mar 2020 20:43:38 +0800</pubDate><description><![CDATA[Leetcode 70：爬楼梯题目描述我的解法：暴力法运行超时其它解法1：对暴力法的优化其它解法2：动态规划其它解法3：斐波那契数其它解法4：直接套斐波那契通项公式
题目描述
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢？
注意：给定 n 是一个正整数。
示例 1：
输入： 2
输出： 2
解释：有两种方法可以爬到楼顶。
1....]]></description><category></category></item><item><title><![CDATA[多线程交替工作的一种简单方式，以实现RGB和YUV420的相互转换为例]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104846781</link><guid>https://blog.csdn.net/IcdKnight/article/details/104846781</guid><author>IcdKnight</author><pubDate>Fri, 13 Mar 2020 18:51:58 +0800</pubDate><description><![CDATA[本篇博文接前篇自己思考出来的一种实现多线程交替工作的方式，给出来一个关于双线程协同工作的一种实际应用场景，实现的是RGB和YUV420的相互转换。主函数启两个线程，其中，一个线程用来读取RGB形式图片，并转成YUV格式数据存到申请的内存中；另一个线程用来读取内存数据，并把YUV格式转成RGB并显示。因为需要先进行线程1的读取转换存储，再进行线程2的读取内存和转换显示，两个线程交替工作，所以用到了前...]]></description><category></category></item><item><title><![CDATA[自己思考出来的一种实现多线程交替工作的方式]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104847122</link><guid>https://blog.csdn.net/IcdKnight/article/details/104847122</guid><author>IcdKnight</author><pubDate>Fri, 13 Mar 2020 18:50:24 +0800</pubDate><description><![CDATA[自己思考出来的一种实现多线程交替工作的方式
多线程协同工作，一般会用到信号量。但有没有简单点的方式来实现呢？我发现这个不用信号量也是可以实现的（虽然还是推荐信号量…），做法就是加一个标志位，用while循环控制两个线程的阻塞。
代码见下：
#include &lt;iostream&gt; 
#include &lt;thread&gt;
#include &lt;windows.h&gt;

u...]]></description><category></category></item><item><title><![CDATA[Leetcode 88：合并两个有序数组]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104844439</link><guid>https://blog.csdn.net/IcdKnight/article/details/104844439</guid><author>IcdKnight</author><pubDate>Fri, 13 Mar 2020 17:59:30 +0800</pubDate><description><![CDATA[Leetcode 88：合并两个有序数组题目描述我的解法其它解法1：直接赋值，不用push_back其它解法2：对解法1的简化其它解法3-5：用到vector自带的api
题目描述
给你两个有序整数数组 nums1 和 nums2，请你将 nums2 合并到 nums1 中，使 num1 成为一个有序数组。
说明:

初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
你可以假设...]]></description><category></category></item><item><title><![CDATA[Leetcode 108：将有序数组转换为二叉搜索树]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104815932</link><guid>https://blog.csdn.net/IcdKnight/article/details/104815932</guid><author>IcdKnight</author><pubDate>Thu, 12 Mar 2020 12:46:22 +0800</pubDate><description><![CDATA[Leetcode 108：将有序数组转换为二叉搜索树题目描述解法1：创建辅助函数迭代解法2：原函数迭代
题目描述
将一个按照升序排列的有序数组，转换为一棵高度平衡二叉搜索树。
本题中，一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
示例：
给定有序数组: [-10,-3,0,5,9],

一个可能的答案是：[0,-3,9,-10,null,5]，它可以表示下面...]]></description><category></category></item><item><title><![CDATA[C++使用纯虚函数的接口封装以及接口的调用方法]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104456560</link><guid>https://blog.csdn.net/IcdKnight/article/details/104456560</guid><author>IcdKnight</author><pubDate>Sun, 23 Feb 2020 18:17:37 +0800</pubDate><description><![CDATA[C++使用纯虚函数的接口封装以及接口的调用方法
受疫情的影响，本研狗最近一直在家养老，但是，实验室那边的项目突然压下来了，无奈，只好云办公呗。给的任务是对我之前完成的项目做一个封装，对外部提供接口使用。这**就涉及到我知识的盲区了呀，时间还催的挺紧，只好这两天边学边做，终于肝出来了一个初步的成果，做好了空的原型库定义，加上了要求的输入输出参数，封装成了接口。然后想着趁着热乎劲，赶紧把方法总结下来，...]]></description><category></category></item><item><title><![CDATA[Leetcode 102：二叉树的层次遍历]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104291182</link><guid>https://blog.csdn.net/IcdKnight/article/details/104291182</guid><author>IcdKnight</author><pubDate>Fri, 14 Feb 2020 11:56:29 +0800</pubDate><description><![CDATA[Leetcode 102：二叉树的层次遍历题目描述我的解法：前序遍历思想
题目描述
给定一个二叉树，返回其按层次遍历的节点值。 （即逐层地，从左到右访问所有节点）。
例如:
给定二叉树: [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果：
[
  [3],
  [9,20],
  [15,7]
]...]]></description><category></category></item><item><title><![CDATA[Leetcode101：对称二叉树]]></title><link>https://blog.csdn.net/IcdKnight/article/details/104231278</link><guid>https://blog.csdn.net/IcdKnight/article/details/104231278</guid><author>IcdKnight</author><pubDate>Mon, 10 Feb 2020 11:01:57 +0800</pubDate><description><![CDATA[Leetcode101：对称二叉树题目描述我的解法其它解法1：递归其它解法2：利用队列的非递归遍历
题目描述
给定一个二叉树，检查它是否是镜像对称的。
例如，二叉树 [1,2,2,3,4,4,3] 是对称的。
    1
   / \
  2   2
 / \ / \
3  4 4  3

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
    1
   / \
  ...]]></description><category></category></item><item><title><![CDATA[Leetcode 98:验证二叉搜索树]]></title><link>https://blog.csdn.net/IcdKnight/article/details/103965103</link><guid>https://blog.csdn.net/IcdKnight/article/details/103965103</guid><author>IcdKnight</author><pubDate>Fri, 07 Feb 2020 10:48:55 +0800</pubDate><description><![CDATA[Leetcode 98:验证二叉搜索树题目描述我的解法
题目描述
给定一个二叉树，判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征：

节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。

示例1：
输入:
    2
   / \
  1   3
输出: true

示例2：
输入:
    5
   / \
...]]></description><category></category></item><item><title><![CDATA[Leetcode 104:二叉树的最大深度]]></title><link>https://blog.csdn.net/IcdKnight/article/details/103948988</link><guid>https://blog.csdn.net/IcdKnight/article/details/103948988</guid><author>IcdKnight</author><pubDate>Sun, 12 Jan 2020 21:54:56 +0800</pubDate><description><![CDATA[Leetcode 104:二叉树的最大深度
题目描述
给定一个二叉树，找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例：
给定二叉树 [3,9,20,null,null,15,7]，
    3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3 。
说明
此题与二叉树的遍历有关，关于二...]]></description><category></category></item></channel></rss>