Byakuren:一個 C 實(shí)現(xiàn)的主題色提取庫

原文地址: https://xcoder.in/2017/03/03/byakuren/

好久沒發(fā)文章了痪宰,借著 Byakuren 開源的檔口炒炒冷飯吧昔汉。

先上 Repo 地址:https://github.com/XadillaX/byakuren宪迟。

主題色

圖像主題色是從一張圖像中提取出來最能代表這張圖片主色調(diào)的多種顏色陕凹。 也就是說在一幅色彩斑斕的圖片里面望忆,各種不同顏色的數(shù)量就對應(yīng)著該顏色在圖 片中的比例,程序可以通過計算圖片中不同顏色的像素數(shù)來算出主題色阐虚。

主題色提取算法

提取的算法在我之前的博客中有說明序臂。在 Byakuren 中其實(shí)用的就是之前博客中講的一些算法。

除去上面兩種算法实束, Byakuren 還提供了將這兩種算法結(jié)合起來的 Mix 算法奥秆。

Byakuren

Byakuren 是我前兩年寫的一個主題色提取庫,也是繼 thmclrx 之后的 C 版實(shí)現(xiàn)咸灿,個人認(rèn)為代碼質(zhì)量比舊版的 thmclrx 要高构订。并且它實(shí)際上經(jīng)過了企業(yè)級的驗(yàn)證,在某相關(guān)的公司已經(jīng)歡快跑了有些年頭了避矢。

在經(jīng)過相關(guān)人員的同意下鲫咽,我也算把這雪藏了好久的代碼給開源出來了签赃。

偽·Byakuren 是什么?

聖 白蓮(ひじり びゃくれん分尸, Hiziri Byakuren )是系列作品《東方 project 》中的角色锦聊,首次登場于《東方星蓮船》。

  • 種族:魔法使
  • 能力:使用魔法程度的能力(酣暢增強(qiáng)身體能力的)
  • 危險度:不明
  • 人類友好度:中
  • 主要活動場所:命蓮寺之類
  • 命蓮寺的住持箩绍。雖然原本是人類孔庭,不過由于常年的修行已經(jīng)完全超越了人類。現(xiàn)在已經(jīng)屬于人們常說的魔法使了材蛛。

雖然已經(jīng)入了佛門圆到,但是不知道什么原因卻被妖怪敬仰著。她從來沒有像童話故事中的魔法使那樣卑吭,念誦著咒語治退妖怪芽淡。使用的力量完全是邪惡的,一點(diǎn)都不像是圣人豆赏,雖然并沒有人目擊到她與人類為敵挣菲,但其實(shí)已徹底成為妖怪的同伴了。

好吧掷邦,總之本人是個東方控白胀,所以基本上項(xiàng)目名都跟東方有關(guān)。

真·Byakuren 是什么抚岗?

如文章題目所說或杠,它是一個 C 實(shí)現(xiàn)的開源主題色提取的庫,大家可以把它編譯成鏈接庫使用宣蔚。

不過目前暫時只支持 Makefile 的形式來編譯向抢,大家如果有興趣也可以自己建個 Windows 下的 Visual Studio 項(xiàng)目等,也歡迎提類似于 CMake 之類的 PR 胚委。

使用

其實(shí)詳細(xì)的使用方法在文檔中就有說明挟鸠。

不過這里還是簡單介紹一下吧。

Clone

先把代碼給下下來篷扩,你也可以把它 Clone 下來≤哉担總之倉庫地址是:https://github.com/XadillaX/byakuren鉴未。

make

然后跑到目錄下執(zhí)行 make

$ make byakuren

你將得到一個 byakuren.a 的靜態(tài)鏈接庫鸠姨。

這個時候你只要拿著這個靜態(tài)鏈接庫铜秆,然后順便在你的項(xiàng)目中把頭文件引進(jìn)來就可以了。

#include "byakuren.h"

API

我們假設(shè)你有 bkr_rgb* rgb 的圖片像素信息讶迁,以及 uint32_t color_count 的圖片像素總數(shù)兩個變量连茧,下面分別給出三個樣例。具體的 API 解析還請去文檔觀摩。

Octree
bkr_color_stats stats[256];
bkr_octree_node* root = bkr_build_octree(rgb, color_count, 256);
int colors = bkr_octree_calculate_color_stats(root, stats);
bkr_release_octree(root);

colors 就是主題色數(shù)量了啸驯,傳進(jìn)去的 stats 就會接收到主題色的具體信息了客扎。

Min-diff
bkr_color_stats stats[256];
bkr_mindiff_parameter param;
param.gray_offset = 5;
param.palette = NULL;
int colors = bkr_mindiff_calculate_color_stats(rgb, color_count, stats, &param);

colorsstats 如上所述。

Mix
bkr_color_stats stats[256];
bkr_mindiff_parameter param;
param.gray_offset = -1;
param.palette = NULL;
int colors = bkr_mix_calculate_color_stats(rgb, color_count, 256, &param, stats);

colorsstats 如上所述罚斗。

預(yù)覽一下

可能有人想看看效果徙鱼,我這里就放個效果圖給大家看看吧。

其中 Octree 和 Mix 兩個算法的主題色最大數(shù)量參數(shù)傳的都是 16 针姿。

能做什么袱吆?

你可以拿它來寫一些主題色提取的東西。

你也可以拿它來完成其它語言的主題色提取庫的封裝距淫,如 Python 绞绒、 Lua 等等。歡迎反饋給我榕暇。

結(jié)束語

把一份自己覺得還不錯的代碼開源出來的感覺特爽蓬衡,尤其是這種重見天日的感覺。?|???|?*~●

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拐揭,一起剝皮案震驚了整個濱河市撤蟆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堂污,老刑警劉巖家肯,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盟猖,居然都是意外死亡讨衣,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門式镐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來反镇,“玉大人,你說我怎么就攤上這事娘汞〈醪瑁” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵你弦,是天一觀的道長惊豺。 經(jīng)常有香客問我,道長禽作,這世上最難降的妖魔是什么尸昧? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮旷偿,結(jié)果婚禮上烹俗,老公的妹妹穿的比我還像新娘爆侣。我一直安慰自己,他們只是感情好幢妄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布兔仰。 她就那樣靜靜地躺著,像睡著了一般磁浇。 火紅的嫁衣襯著肌膚如雪斋陪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天置吓,我揣著相機(jī)與錄音无虚,去河邊找鬼。 笑死衍锚,一個胖子當(dāng)著我的面吹牛友题,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播戴质,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼度宦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了告匠?” 一聲冷哼從身側(cè)響起戈抄,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎后专,沒想到半個月后划鸽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戚哎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年裸诽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片型凳。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡丈冬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甘畅,到底是詐尸還是另有隱情埂蕊,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布疏唾,位于F島的核電站蓄氧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏荸实。R本人自食惡果不足惜匀们,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一缴淋、第九天 我趴在偏房一處隱蔽的房頂上張望准给。 院中可真熱鬧泄朴,春花似錦、人聲如沸露氮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畔规。三九已至局扶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叁扫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翻伺,地道東北人诗鸭。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像对室,于是被迫代替她去往敵國和親模燥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容