本节实现的是使用OpenCV里自带的函数,检测出视频里图像中的蓝色和天蓝色、青色,比如我的手机背景、我衣服上的蓝色格子,墙砖的蓝色和学生证照片上的蓝色背景。
设置“蓝色”HSV范围
BGR转HSV
捕获摄像头视频
获取蓝色部分mask
图像按位与操作
显示蓝色部分图像
实现过程
定义视频对象
视频对象用于捕获摄像头视频流。
``` python
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
```
设置HSV中蓝色、天蓝色范围
这里主要参考了这个博客,我设置的颜色范围如下。
```python
set blue thresh
lower_blue=
继续阅读 »
各个语言的正则表达式使用,在这些记录一下:
Javascript
Javascript的正则函数好像是最简单的了,也可能是因为本身就是一种弱类型的语言:看一下使用吧:
var pattern = /test$/;
pattern.match("test"); // 这个会匹配全串,返回true or false;
pattern.exec("test"); //这个呢则会查找每个匹配的部分,返回值是匹配的字符串
继续阅读 »
一、按比例缩放
首先说按比例缩放,这是在Interface Builder中无法设置的内容。而在代码中,使用NSLayoutConstraint类型的初始化函数中的multiplier参数就可以非常简单的设置按比例缩放。同时也可以设置不同NSLayoutAttribute参数来达到意想不到的效果,比如"A的Width等于B的Height的2倍"这样的效果。
继续阅读 »
作者:刘丰恺
作者博客:若梦浮生
转载请注明文章来源
我们在开发自定义控件的时候经常会有这样的需求,一个控件既需要能够被拖拽,也需要能够被点击。其实这个需求有个矛盾之处,需要被拖拽就要复写onTouch(...)函数,但是这样点击事件就被覆盖了,正常的 onClick() / onLongClick()事件是不能被响应的了。
现在面对这种情况GestureDetector,ViewDragHelper能为我们的开发提供一些便利,但是有的情况下这些封装的工具类没办法很好的满足我们的需求,这时候我们就需要自己来模拟View的点击事件。
模拟View点击事件说起来也很简单,说白了就是获
继续阅读 »
lua原生并没有提供try-catch的语法来捕获异常处理,但是提供了pcall/xpcall等接口,可在保护模式下执行lua函数。
因此,可以通过封装这两个接口,来实现try-catch块的捕获机制。
我们可以先来看下,封装后的try-catch使用方式:
```lua
try
{
-- try 代码块
function ()
error("error message")
end,
-- catch 代码块
catch
{
-- 发生异常后,被执行
function (errors)
print(errors)
end
}
}
```
上面
继续阅读 »
动机
pure functions 看似完美,但却不能模拟现实世界中的诸多任务。这是由于 pure functions 是良定的映射,对于特定的输入值会返回唯一的输出。这种模式在面对如下任务时会显得苍白无力:
有可能失败的任务。如大多数的 IO。
依赖外部状态的任务。如(伪)随机数生成器。
非确定性任务,即对于确定的输入可能有多个输出。这种在 IP 中较为少见。
对外界会造成影响的任务。如大多数的写入过程。
这些问题可以用数学中的域扩充技巧来解决。
域扩充
在数学中,当定义问题的范畴不足以容纳问题的解时,我们通常会对相关的范畴进行扩充。类似的技巧同样也可以应用在这里。
假设一个不良定的函数 f: A -> B:
如果 f
继续阅读 »
1. 基本的柱状图
```py
import matplotlib.pyplot as plt
data = [5, 20, 15, 25, 10]
plt.bar(range(len(data)), data)
plt.show()
```
plt.bar函数签名为:
py
bar(left, height, width=0.8, bottom=None, **kwargs)
事实上,left,height,width,bottom这四个参数确定了柱体的位置和大小。默认情况下,left为柱体的居中位置(可以通过align参数来改变left值的含义),即:
(left - width / 2, bottom)为左
继续阅读 »
TBOX的内存分配在调试模式下,可以检测支持内存泄露和越界,而且还能精确定位到出问题的那块内存具体分配位置,和函数调用堆栈。
内存泄露检测
内存泄露的检测必须在程序退出的前一刻,调用tb_exit()的时候,才会执行,如果有泄露,会有详细输出到终端上。
c
tb_void_t tb_demo_leak()
{
tb_pointer_t data = tb_malloc0(10);
}
输出:
[tbox]: [error]: leak: 0x7f9d5b058908 at tb_static_fixed_pool_dump(): 735, memory/impl/stat
继续阅读 »
介绍
一群恶魔的猪从无辜的小鸟那里偷走了所有的前端架构,现在它们要夺回来。一对特工英雄(愤怒的小鸟)将攻击那些卑鄙的猪,直到夺回属于他们的前端架构。(译者注:本系列是关乎前端架构的讨论,作者借用当前最风靡的游戏 - 愤怒的小鸟,为我们揭开了前端架构的真实面目。)
小鸟们最终能取得胜利吗?它们会战胜那些满身培根味的敌人吗?让我们一起来揭示 JavaScript 之愤怒的小鸟系列的另一个扣人心弦的章节!
阅读本系列的介绍文章,查看所有小鸟以及它们的进攻力量。
战况
红色大鸟 - 立即调用的函数表达式
蓝色小鸟的攻击力
在这篇文章中,我们将看看蓝色小鸟,它通过触发事件和消息来渗透进猪猪的城堡中,慢慢的,小鸟们将一个接一个地
继续阅读 »
介绍
一群恶魔的猪从无辜的小鸟那里偷走了所有的前端架构,现在它们要夺回来。一对特工英雄(愤怒的小鸟)将攻击那些卑鄙的猪,直到夺回属于他们的前端架构。(译者注:本系列是关乎前端架构的讨论,作者借用当前最风靡的游戏 - 愤怒的小鸟,为我们揭开了前端架构的真实面目。)
小鸟们最终能取得胜利吗?它们会战胜那些满身培根味的敌人吗?让我们一起来揭示 JavaScript 之愤怒的小鸟系列的另一个扣人心弦的章节!
阅读本系列的介绍文章,查看所有小鸟以及它们的进攻力量。
战况
红色大鸟 - 立即调用的函数表达式
蓝色小鸟 - 事件
黄色小鸟的攻击力
在这片文章中,我们将看看黄色小鸟,它使用 RequireJS 作为助推器,利用动态脚
继续阅读 »