製作 這張圖 的時候, 學會一些透明與半透明的技巧。
2025年10月10日 星期五
2022年4月2日 星期六
在命令列上從 *.sql 檔直接產生 ER Diagram
拿到一個資料庫實例 (database instance) 第一件事就是畫出它的 ER Diagram。 例如 要下 join 指令時,我一定要看著 ER Diagram 才會下。 有很多 資料庫圖形介面的軟體 (例如 DBeaver) 都可以幫一個運行中的資料庫畫 ER Diagram。 可是其實單單是 DDL (就是 create table 之類的指令) 就應該已經提供足夠的資訊可以畫圖了啊... 我可不可以連 mysql 都不要安裝, 直接拿一個定義 schema 的 *.sql 檔, 用簡單的命令列工具就畫出 ER Diagram 呢? 在 github 上面找到兩個幾乎符合我需求的專案。
2021年8月7日 星期六
2020年1月16日 星期四
pip 套件繪製相依圖
我的 python 程式都是小程式, 但經常用到很多相依套件。
(因為我既懶惰又很會搜尋 ^_^)
偶爾會想知道: 到底這些套件彼此之間有什麼樣的相依性?
例如有一天想畫股票 K 線圖, 爬文得知至少有 mplfinance
跟 dash 兩個現成函式庫可用。
那到底它們各自又會引進哪些函式庫呢? 交集多嗎?
這時就可以用 pipdeptree 來畫圖。
以 python3 為例, 用 pip3 install --user pipdeptree
安裝 pipdeptree, 並且也必須安裝 「想要研究相依性的那些套件」,
然後: pipdeptree --graph-output svg -p dash,mplfinance
> dash-mplfinance.svg 就產生一張壯觀的 svg 圖,
可以用瀏覽器打開來欣賞。
2018年9月29日 星期六
快速畫風移轉: 你的圖片/相片/影片, 以名畫家的動漫風格重現!
兩年前的此時, 畫風轉移魔法引發熱烈討論。 我有自己架起來玩過, 很好玩, 但光是轉一張圖就要好幾個小時。 這兩年來, 不斷有人提出改良版的演算法。 目前最佳的版本稱為 fast style transfer, 如果不計算預先訓練畫風的時間, 只計算轉移的時間, 速度超快。 即使是在我的 2014 年老電腦上只用 CPU (Intel Pentium G2030 @ 3.00GHz) 也能處理影片。 下圖每塊 212x120 的 13 秒影片各約耗時 3.5 到 4 分鐘。
2017年12月30日 星期六
ImageMagick mask : 批次遮罩疊圖 (例如局部著色)
先前曾經
在 gimp 裡面採用遮罩機制 幫相片只保留主角的顏色。
遮罩疊圖不僅限用於著色。 凡是需要
「把一張圖的一部分疊到另一張底圖之上」 的動作都適用。
如果有很多張圖要用相同的方式處理,
改用 ImageMagick 指令會比用 gimp 快。
最麻煩的部分是: 每張圖的遮罩很難自動產生。 不過現在 AI 那麼厲害,
很快地就會出現各種類似
街道圖片 semantic segmentation 語義分割 的類神經網路,
到時候這篇所介紹的技巧就會很有用了:
我們要解說如何用 ImageMagick 命令列把一張原圖及它的語義分割成果圖轉換成局部著色的圖。
我已更新
範例圖檔, 裡面包含九張原圖 (orig/*) 跟九張語義分割成果圖
(result/*) 所以你不需要架設 docker 等等, 只要有安裝
ImageMagick 就可以跟著實作。
2017年12月24日 星期日
街道圖片 semantic segmentation 語義分割實作
所謂 (圖片的) semantic segmentation 語義分割 是指 「如何辨識一張圖片當中哪些 pixels 構成了人、 哪些 pixels 構成了車子、 ... 等等」 這個問題。 理論的部分 ( 知乎簡中原文、 itread01 內容農場正體中文) 我也沒研究, 呵呵, 直接省略。 幾個月前上網找到 (僅適用於分析街道圖片的) ENet Semantic Segmentation 實作, 斷斷續續花了幾個週末 建立映射、 撰寫 Dockerfile、 修改外包裝 python 程式, 這個週末終於把可用的版本上傳到 Dockerhub 的 ckhung/enet 去。 嗯, 效果不太好... 大家將就玩玩看吧!
2017年10月28日 星期六
(可離線/批次/命令列的) 把彩色相片變成黑白、 幫黑白相片上色
想要把彩色圖片變成黑白, 可以這樣下:
convert color.jpg -colorspace Gray gray.jpg。
詳見
ImageMagick 手冊。
想要把黑白相片塗上顏色, 可以到 梅問題大大 及 攝影札記 所介紹的網站去上傳相片。
如果不想上傳, 想要離線作業, and/or 需要以指令的方式批次大量處理 -- 例如想要幫歷史黑白影片上色 -- 那就到 github 去下載 colorization 吧。 (有圖可看效果)
2017年9月9日 星期六
wordnet 名詞從屬關係繪圖
Wordnet [官網、
維基百科] 是 Princeton 大學所建立的英文詞典。
裡面的詞彙 按照觀念 整理,
而不是按照字的拼字/外形整理。 例如 "fall.n.01" 是 「秋天」
的概念, 跟 "autumn.n.01" 是同一個概念,
兩者只是第 15236859 號名詞的不同寫法;
而 "fall.v.01" 則是另一個字 「跌倒」,
它是第 1972298 號動詞。 名詞之間有從屬關係。
例如 "great_ape" 巨猿有三個 hyponym (下義詞):
chimpanzee (黑猩猩)、 gorilla (大猩猩)、 orang_utan (紅毛猩猩);
反過來說, "great_ape" 是 chimpanzee 的 hypernym (上義詞)。
可以大約把這理解為界門綱目科屬種的階層分類概念;
但它是英文詞典不是生物辭典,
所以畫出來的樹狀關係並不具有真正生物分類學的意義。
而且畫出來的也未必是樹狀關係, 有可能是 directed acyclic graph。
2017年9月1日 星期五
從相片的 exif 資料撈描述字串、 用 imagemagick 在相片上寫字 (批次處理相片檔的命令列入門練習)
需要批次大量修圖時, ImageMagick 超好用。
命令列麻瓜/新手/小學生請跟著我做,
勇敢踏出滑鼠選單便利但局促的保護傘,
感受一下 「用電腦」 跟 「被電腦用」 的差別。
2017年8月11日 星期五
自動(大量批次)尋找擷取、裁剪、模糊化、馬賽克照片中的人臉
需要從一大批相片當中偵測/擷取/裁剪出所有人臉嗎? 或是想把一大批相片當中的人臉通通打馬賽克或變模糊以保護隱私嗎? 這時你需要 facedetect。 對, 相機早就可以自動抓臉; 但是當命令列控發現一個不必寫程式就能用的命令列工具、 看到可以在 raspberry pi 上面寫 shell script 的可能性時, 這完全又是另一個等級的興奮感啊!
2016年8月30日 星期二
接新班的導師們的班級姓名照片點名卡
又是一學年的開始, 很多導師要接新班了。
已經幫學生照好了大頭照, 想要製作一張 「本班姓名照片卡」 嗎?
請下載
class-pictures.rar 並解壓縮。
2016年8月16日 星期二
gimp、 數位鑑識及隱私
相片檔裡面可能藏有很多肉眼看不太出來的秘密。
除了
jpg 檔裡的 exif 文字資訊 有可能會洩漏拍照時間地點之外,
你以為太亮或太暗的相片, 如果細心處理, 其實可能還可以挖出更多資訊。
左圖是高手很帥氣的電腦畫面, 右圖則是用 gimp 挖出來的相片當中並不太帥的高手 :-)
2016年8月14日 星期日
用 gimp 把圖片背景變成黑白, 只保留主角的色彩
把一張圖片/相片的背景變成黑白/灰階,
只保留主角/主體/人像的顏色, 可以製造突顯主角/主體的效果。
雖然可能會
被攝影師嫌惡, 但管它呢! 反正很好玩。
搜尋 「彩色 背景黑白」 會找到很多 photoshop 的教學文;
搜尋 「gimp gray background」 也會找到
英文版 gimp 教學文。
那中文版 gimp 教學文呢? 就我來寫吧!
2015年11月17日 星期二
抄程式學 d3.js
需要將大量的數據變成會說故事的圖案嗎?
可以用 javascript 函式庫 d3.js 來實現。
想學嗎? 那就抄我的程式吧。
「以 D3.js 製作的臺灣人口互動統計圖及統計地圖」
是我自己學習 d3.js 的練習作業。
假設你己經思考過
「令開發者愛恨交織的 javascript」
裡面所提的問題, 覺得還是可以學 js。
那麼就從零開始, 逐步增加功能, 一小段一小段抄 我的程式。
每次請只抄看得懂的部分,
並且順手改一下 css 等等外觀版面設計。
配合以下的說明, 應該很快就可以進步到比完全新手還要再高兩級的程度
(大約是中二的概念)。 文中有一些官方文件的連結,
搭配著能動的範例程式來讀比較易懂。
而且先前我卡關的地方, 文中都已列出 (大量搜尋爬文後篩選出來的)
參考文件了, 你可以省下很多摸索的時間。
當然, 這篇文章的步調也會比較快、
省略很多 (你自己必須填入的) 細節。
所以我們先從預備閱讀開始。
2015年8月12日 星期三
臺灣各級行政區域(縣市/鄉鎮/村里)邊界座標檔, 自選解析度、 存成 csv、 畫成 svg
政府資料開放平臺提供全國
縣(市)行政區域界線、
鄉(鎮、市、區)行政區域界線、
村里界圖 三個資料集。
如果你想從中萃取 「宜蘭縣各鄉鎮邊界.json」
或是 「高雄市鼓山區各里邊界」, 該怎麼做呢?
要如何降低解析度、 減少資料量?
如何存成文字檔, 用 gnuplot 畫成 svg 圖檔,
或是匯入其他一般「非地理資訊系統」的軟體裡面?
也許 Quantum GIS 之類的專業地理資訊系統本來就能處理
(如果看到教學文, 請分享一下網址囉);
不過我就是喜歡用命令列的文字檔工具來處理。
感覺學習門檻比較低;
每個中間步驟都看得見, 比較踏實;
若需要批次處理也比較簡單;
學這些通用小工具, 將來可能在更多地方可以派上用場。
2013年10月27日 星期日
用 graphviz 繪製 debian 套件相依關係圖
到底我的 debian (或 ubuntu/antix/...) 系統裡面,
哪些套件最佔用空間? 它們彼此之間的相依關係 (dependency) 如何呢?
其實 apt-* 系列指令可以部分回答這兩個問題。
不過畫出來的圖大到完全無法理解。 這篇就來示範一下如何畫出類似右圖的結果,
並且順便練習一下 grep、 graphviz、 輸入輸出重新導向、
pipe、 命令結果代換等等, 再次展示 「組合的力量」。
2013年9月11日 星期三
Inkscape 矇矓疊圖
暑假到英國找尼斯湖水怪, 出國前為了在部落格上貼圖公告,
草草學會如何把一張圖矇矓地疊在另一張圖之上,
製作出夢幻的感覺, 很訝異地發現自己居然也有文藝細胞 :-)
(謎之音: 意思是說水怪很唯美還是怎樣?)
當然不是用 photoshop 或 illustrator 製作,
而是用 inkscape 製作。
2012年9月3日 星期一
原來 IPTC、 IIM、 XMP、 EXIF 是... 認識 jpg 相片/圖檔的「中繼資料」 內嵌文字欄位機制
相片/圖片檔 *.jpg 裡面, 其實內含了很多文字資訊,
例如相片的標題、 一段文字描述、 一組標籤、 ... 等等。
這些資訊稱為 「中繼資料」 (metadata)。
用
exiftool 命令 可以列出來。 或者用 geeqie 看圖軟體的
「檢視」 => 「exif window」 也可以查看。
[2022/6 在強尼戴普vs他老婆的官司裡,
相片的 metadata 也扮演著證據的角色。 (前三分半鐘) ]
這些文字資訊其實混合了 IIM (一般稱為 IPTC)、 XMP、 EXIF
等等多種標準; 裡面又有些某些欄位彼此重複。
到底這些簡寫之間有什關係? 重複的欄位有什麼作用?
2012年9月1日 星期六
用 exiftool 查看/(整批)編修圖檔裡面的文字資訊
先前美妝部落客照片時間順序不對被抓包一事,
網友是怎麼看出來的呢?
資料夾裡雜亂的一堆相片, 哪幾張是用哪部相機拍的呢?
當初拍攝時所採用的光圈/快門是多少? 有沒有用閃光燈?
如果你會操作 exiftool 查詢增刪相片裡面的
IPTC/IIF/XMP/EXIF 等等文字資訊,
就能回答上面的問題。 請搜尋 「exif 相片」 或
「exiftool 相片」 可以找到很多圖形介面的教學文。
但是 真正的男子漢是不用滑鼠的
貴哥習慣用 regexp 批次處理大量資料,
所以這帖要分享命令列版的操作方式。
在 fedora 底下, 要安裝 perl-Image-ExifTool 套件; 在 ubuntu 底下, 要安裝 libimage-exiftool-perl 套件。
大人問小孩: 「全世界的玩具隨便你挑? 這怎麼可能?
如果我要的玩具只有一個, 正好又被別人借走了呢?」