今天下午修复了一个 YUV 图像翻转的问题,YUV 图像翻转其实没啥好说的,但期间碰到了一点性能问题,性能优化的过程我觉得比较有趣,所以在这里分享出来,希望对大家有帮助。
YUV 翻转
YUV 是一种图像编码格式(RGB 也是一种图像编码格式),YUV 主要用于视频,用来降低带宽。安卓平台上,用 Camera1 API 采集出来的数据(通过 PreviewCallback 回调获得)默认是 YCbCr_420_SP(简称 NV21,这是 YUV 的一种子格式)格式,NV21 的数据分布如下图所示(图片来源于 StackOverflow):
继续阅读 »
使用 dva 已经四个月了吧,陆陆续续做了两三个项目,之前在非常恶心的傻逼公司 Kyligence,算是我的 dva 的启蒙地,那一天傍晚,不小心看到了 ant-tool,然后又看到了 antd,于是感觉我的前端有了一次不小的改变~ 😇
几个概念
上面是一张 dva 的图,component,state,dispatch,connect 都是与 redux 一样的概念,不过,dva 把 action -> reducer 拆分成了,action -> model(reducer, effect,subscription),这一部分改变的还是很多的,让 dispatch 的写法方便了一万倍。
Model
一个简单的 mod
继续阅读 »
文/Robin
由于笔者平时有使用 Photoshop 修图作图的需求,所以在什么渠道获取到正版 Photoshop 就是亟需解决的问题。
可能读者有问题了,互联网上 Photoshop 破解版遍地都是,何苦寻求正版呢。笔者在 2017 年给自己定了一个强制要求,所有的软件必须使用正版。其一,这是对开发者、项目方的支持和尊重,倘若他们都没有收入,如何给我们带来稳定的服务?其二,破解版通常会有多种方式,比如注册码、注册机、替换特殊文件、下载完整破解版。注册码的安全隐患还好,但要找到一个能用的注册码是需要花费大量的时间和精力。注册机、替换特殊文件、下载完整破解版,这几种方式对原本的软件都是有侵入的,至于是什么程度的侵入,又会带来
继续阅读 »
本节实现的是提取出灰度图像和彩色图像的直方图。
显示灰度图像的灰度直方图
显示彩色图像各个通道的灰度直方图
在一幅图上显示三个通道的灰度直方图
实现过程
引用与打开图片
不再赘述,代码如下。
``` python
import cv2
import numpy
img1 = cv2.imread("test1.jpg", 0) #灰度图像
img2 = cv2.imread("test2.jpg") #彩色图像
```
灰度图像直方图
opencv里自带了calcHist()函数,可以计算一幅图像中各个像素值出现的次数,其函数的各个参数如下:
python
hist = cv2.calcHist([i
继续阅读 »
文/Robin
2020 年 8 月 19 日,稳定币发行商 Tether(USDT)正式在以太坊扩容项目 OMG Network(原 OmiseGO)上发行 USDT 稳定币,可以在 OMG Network 网络上完成 USDT 的实时集成,与以太坊网络相比,OMG Network 网络将允许交易者能够使用更快、更低的成本来进行 USDT 的转账、储存和提取。
Bitfinex 后台可以查看到 USDT 的版本,目前有 8 种之多,分别是 Omni、Ethereum、EOS、Tron、Liquid、Algorand、BCH、OMG,如下图:
OMG Network 是个什么样的项目呢?
OMG Network 旨在
继续阅读 »
相信大家在做Android开发的时候,一定遇到以下问题:
界面A上有一个按钮B1,点击时,需要变换背景颜色
界面B的按钮B2与界面A的按钮B1外观一样,只是颜色不同
通常我们的解决办法是向UI要按钮的背景图,不同的状态是一张图片。以上为例,我们需要向美工索取4张图片。
按钮B1(常态与点击态),按钮B2(常态与点击态),然后再定义selector drawable xml,如果美工给的不是9.png,我们还要使用nine-patch工具将其转为9.png图片。
大家可以想象一下,如果状态更多,而页面上的按钮又各不相同的话,天啊!那该有多少图片,多少个selector啊,得花多少时间啊!有没有快捷的解决办法呢?答案当然是有!
继续阅读 »
链接:Link 状态:Runtime Error
前言
这题做的可真够久的,整整三个小时。但即便如此,还是只过了一部分的点,另一部分报运行时错误——估计是哈希表设计的不太好。但这确实是一道好题,因此,在睡觉前决定记录一下。
分析
很容易便想到:用一个三元组$(x,y,z)$表示节点,表示内容为x的节点下跟着标号为y和z的左右子树。这样一来,一类相同的子树便可以唯一确定了,而不必每构造一棵子树就把整棵树遍历一遍。
对于三元组的储存,刚开始图方便,用了数组。查找也是用了$O(n)$的线性查找。磕磕碰碰写了两个多小时然后兴冲冲地提交,结果TLE了…………没办法,只好又花了半个小时写了一个哈希表,然后就是上文说过的情况了:Runti
继续阅读 »
简介
首先上个图
{% asset_img preference.png %}
Preference控件的目的在于替换Android自带的Preference,在[QuickAF]中,Preference被设计为控件,可以在layout/Activity中随意使用,不必像自带的Preference,需要配合res/xml/xxx_preference、PreferenceFragment/PreferenceActivity使用。
继续阅读 »
Struts2简介
Struts2是由传统的Struts1、WebWork两个经典的MVC框架发展起来,如下图所示,无论从Struts2设计的角度还是在实际项目中的易用性来看,Struts2都是一个非常优秀的MVC框架,当然目前还有另外一个非常优秀的MVC框架——SpringMVC,以后再对它进行介绍。
实现Action
Struts2的Action类是一个普通的POJO(通常应该包含一个无参数的execute方法),Struts2直接使用Action来封装HTTP请求参数,因此,Action类里还应该包含与请求参数对应的实例变量,并且为这些实例变量提供对应的setter和getter方法。注意其实实例变量是可以省略的,因为
继续阅读 »
四月初的 Easter 假期带着全家去了 Nelson 周边自驾游,现在已经过去了将近两周,前段时间一直在忙工作上的事儿,没来记得总结记录,今天周末,媳妇带着儿子找朋友聚餐去了,我难得独自留守家中,终于有机会写作业了。
我们是3.30号早上出发,4.2号下午回到惠灵顿,在 Nelson 周边待了四天三晚,所到之处如下图所示:
继续阅读 »