A simple xterm256 wrapper in C++

如果你的terminal支持xterm-256color模式的话,就可以在terminal中使用256种颜色。利用这256种色彩,可以做出很棒/很酷的效果。比如vim的语法高亮。

这里简单的实现了一个C++类,与cout的行为相同,仅在输出类xterm256::color的实例时做处理,将紧随其后的、截止下一个xterm256::color类实例前的文字输出为对应的颜色。

xterm256::color使用3个unsigned short作为初始化参数,依次对应RGB。在输出时,由于仅有256种色彩,将自动转为与xterm-256color颜色表欧氏距离最近的一种颜色。

简要的使用例子及截图如下

Continue reading A simple xterm256 wrapper in C++

C++下的通用K-means Algorithm模版

之前写过一篇利用k-means算法来计算图像中主要颜色的文章,K-means聚类算法计算给定图像中主要颜色。于是今天顺便写了个较为通用的C++下的K-means算法模版。

有一个主要的模版,还有一个稍有变化的模版,仅体现在传入的第三个参数上。

主要的参数如下,

Parameter Description
k 聚类的种数
min_diff 收束条件,旧的cluster中心与新的之间变化的距离
data1 std::vector<数据类型>
data2 std::vector<std::pair<数据类型, 该实例的统计个数>>
center 传入std::vector<std::pair<数据类型, 该实例的统计个数>>,返回该组数据的中心值
distance 传入给定数据中的两个元素, 返回它们的距离

返回值都是包含k个该种类型的元素的std::vector

Continue reading C++下的通用K-means Algorithm模版