ページ

2021-07-04

openCV での漢字テキストの表示

 

OpenCVを使うと、簡単に動画再生ができる(スクリプトが書ける)のですが、基本的にはキーによる制御しかサポートされていません。というか、キー入力待ちの期間に表示、イベント受け取りが行なわれる様な構造になっています。

動画からフレームを抽出して、再生タイミングに合わせた表示(+キー待ち)を行なう事で動画が再生されます。フレーム画像に手を加えることができるので、動画に対する学習結果を見せるのに使われているようです(検出結果をマークしたりね)。

■フレームへの追記、テキスト描画について


フレームに書き込むためのAPIが用意されていて、基本的な図形と文字を書き込むことができます。ただ、この文字描画が曲者でして、独自のベクターフォントを使っているとかで、US-ASCII の文字しか表示できないのです。

漢字テキストも描画したいという要望が多いようで、ネットを探すと日本語表示するための工夫が見つかります(「openCV 漢字」で探すといくつも出てきます)。基本は、pillow の描画空間を用意して、そこに描画されたテキストを OpenCV の画像に取り込む、ですね。ただ注意点として

  • OpenCV/PILで画像データの持ち方が異なっているので変換が必要になります。
  • カラーも BGR/RGBでデータ順序が異なっているのでこれについても変換が必要になります。

この変換、内部データ構造参照しているので、少々気持ち悪い処理になっていました。

PillowのAPIを見ていたら、pillow 側の
ピクセルデータを参照する機能がありました。Pillow側の描画空間を二値画像にすれば、描画された文字ピクセルのオン・オフが判ります。なので、pillow 側の画像データをスキャンラインの集合に展開すると、OpenCV側では直線描画だけで、文字を描画できます。

Pillowで文字列を描画すると、その文字列画像のデータ(ピクセル)が書き込まれた範囲、エクステント(外接矩形)を求めることができます。これを使うと、効率的にスキャンライン展開が可能になります。

  • pspc=Image.new('1', (幅,高さ),color=0)
モノクロームのイメージ空間を用意します。
  • draw=ImageDraw.Draw(pspc)
イメージに対する描画空間(ハンドル)を取得します。draw経由でpsrcへの描画が行なわれます。
  • font=ImageFont.truetype(フォントパス, サイズ)
TrueTypeフォントを用意します。
  • draw.text((0,0),  テキスト, 1, font)
PILイメージへのテキスト描画
  • bbox=pspc.getbbox()
描画されたテキスト領域(外接矩形)を取得します。画像はこの矩形内だけに存在しています。ああ、難点として描画したテキストが空白だとこれがエラーになる様です。空白の場合はスキップする必要がありました。
  • for y in range(bbox[1], bbox[3])
外接矩形の各スキャンラインについて
inline=False     フラグ初期値
sp = 基準位置
ep = 基準位置
  • for  x in range(bbox[0], bbox[2])
スキャンラインの水平方向について
if pspc.getpixel((x, y )) :
    if not inline :
        sp =  (base[0]  x, base[1 + y])
        inline=True
else:
    if inline:
        ep =  (base[0]  x, base[1 + y])
        cv2.line(画像, sp, ep, 表示色, 1)
                inline=False

ネットで見つけた言い回し

昔のMediumの記事見てていたら、すごい言い回しがありました。Knuthの「The Art of Computer Programming」が発しているメッセージだとのことですが「Step aside, Muggles, because you’re in the presence of a Real Programmer.」。訳すと'控えよ、マグルども。君たちは本物のプログラマーの前にいるのだ。’。ムスカさんの声で演ると雰囲気が出そうです。

2019-03-03

アンドレ・プレビン死去

新聞にプレビンの訃報が載っていました。Wikipediaも更新されていました。追悼のためにとっておきのレコードの思い出を残しておきたいと思います。

30年ばかり昔ですが、出掛けに流していたFM放送で、ご機嫌にスイングしている、フィドルとピアノのジョップリン・ラグが聞こえて来ました。出掛けだったので、誰の演奏だったは確認できなかったのですが、手元に音源が欲しいな、と思う演奏でした。

それから年が流れて、Google、Amazon時代になってから、ふと思い出して、ジョップリン、フィドル(バイオリン)、ピアノ組み合わせで探してみたのです。そうしたら一発で、パールマン、プレビンのCDが見つかりました。大喜びでポチったものです。

聞き出した頃はプレビンはまだ若手と呼ばれていたのですが、そのような方の訃報を見て、年月の経過を噛み締めています。

2018-06-03

brother dominic


このところ図書館の歴史に興味を持ちまして(某SFヒロインの名前繋がりでだったりします)
図書館のお薦め本でこんなのを読みました。

古代の図書館といえば写本の生産拠点でもあったわけですよ。中世になると修道院が写本生産の中心になって来るわけで、写本している修道士というのが中世修道院のイメージになります。

と、そんな辺りまで読み進んだところで、ずっと昔に見た(というか世界の面白CMという感じで紹介されていた)xeroxのCMを思い出しました。今はyoutubeの時代ですから、懐かし広告とかも残っているかな、と思って検索してみたのですよ。

すぐに見つかったのですが、記憶にあるのとちょっと違っていました。昔のCMでは修道院長が、これを500部というだけの無茶振りでしたが、見付けたのでは、500部を多言語化して複数メディアにして世界中に配布とか言っているじゃないですか。

どういうことかなと思って調べたら、昨年2017年初頭にリバイバル版が作成されていたのですね。xeroxが言うところの40年間の技術的進歩を反映したもの、だそうで。

旧版 1975
新版 2017

40年前は製本器がセットになったコピー機は専用の部屋に鎮座していて、特別な時に依頼するものだったのですが(学生時代、普段は青焼きで卒論だけこんなのでコピー)、いまじゃどこのオフィスにもありますものね。修道士がIDカードをかざして起動するところで思わず笑ってしまいました。今時の修道院にはこんな部屋があるんですかね。

新しい版でやっと修道士の名前が聞き取れました。brother dominic と言うんですね。最初は xerox miracle で探しましたが、brother dominic 方が広まっているようです。山程ヒットしました。こういうので技術の進歩を感じるのも面白いものです。

2018-03-18

内田康夫氏死去

同じ頃に脳卒中(虚血性の方)を発症して治療中と伺っていた内田康夫氏が亡くなられたそうです。内田氏のミステリーは100冊オーバー抱えていたのですが、病後の整理で全部売っ払ってしまっていました。

しばらくは内田氏の本でどれが一番だったか話題が続くかもしれません。やはり、一番推しとなると、死者の木霊でしょうか。私としては多摩湖畔殺人事件を推したいところです。まあ、本屋の書棚にはずらっと並ぶでしょうね。

2016-09-15

あれから一年、脳幹出血軽症例


脳溢血の発症からもう一年経ちました。救急搬送された私はERで意識不明になって、CTを診ての診断はかみさんと娘に告げられたそうです。で、告げられた診断が脳幹出血。どういう病気だとググったらかみさん真っ青になってしまったそうです。脳幹出血、一般的には脳出血の中でも特に重篤なケースで、速やかに昏睡状態になって、予後不良、死ぬか寝たきり、って書かれて居ますから。まあ、後の方で、出血量が少なければ助かることもある、と、如何にも取って付けたように記載されているのですが。旦那の救急搬送に同乗してきて旦那が昏睡状態になった横でこういうのを読むのは心臓に悪いですわな。

そんな状況から、急性期病院一ヶ月、リハビリ病院二ヶ月でほぼ後遺症なしで退院した訳で、脳幹出血が重篤例が多いことを知っている人からは奇跡的、と良く謂われています。でも自分に奇跡が起きるとは思えないので、これはどういうことだろうと、色々調べてきました。

「脳幹出血 軽症例」とかでググると医学論文?症例報告?といったページがヒットします。そういうページ、大抵PDFだったりするのですが、によれば、かつては脳幹出血は「絶対予後不良」とまで言われていたのですが、CTを使うようになって、小さな出血まで見つかるようになって見たら、以外と生き残るケース、社会復帰にたどり着くケース、が見つかるようになって来たのだそうです。

その手の論文読むと、必ずと言って良いくらい、参考文献に秋田脳血管障害研究所のDr.中島の論文が載っています。これが1983のもの、CTが発売されてすぐの頃の論文で、最初の症例報告になっているようです。あ、ちなみにこの論文にでていた軽症患者の症状、私のケースそっくりでした。

まだ、大勢を対象とした研究は無いようですが、病院での症例ベースだと3割から7割は助かっているのだそうです。ですから危険な病気(生存が3〜7割ということは7〜3割は死んでいる訳ですから)ではあるのですが、助かれば奇跡、というほどでも無いようですね。

将来、CT何かの診断技術が進んで、症例の研究が進んでくれば、出血の状態からは助かる、危ない、が判るようになってくることでしょう。ガンだって(私ガンもやっています)昔は告知されただけで真っ青だったがのが、家の子供たちみたいに、早く見つかって良かったね、になりましたから、脳幹出血だって、きっとこれなら大丈夫、と言われる日が来ることでしょう。





2015-12-03

闘病記 退院しました


本日、12/03 をもって予定通り退院しました。先程、ほぼ三ヶ月ぶりに家に帰ってまいりました。猫さんが覚えていてくれるかどうか心配でしたが、シャーもフーも無く頭をこすりつけて来ましたので忘れ去られてはいないようでした。

これで闘病記も一応お仕舞い。実際にはお家でのリハビリ(まあもう困らないレベルですが)と再発防止のための生活の始まりです。脳出血は再発率が高く、一説には五年で50%に達するのだとか。まあ、高齢によるものは仕方ないとして、生活習慣に依るところが大きい病気です。再発防止に勤しむのが初回の脳出血で生き残った人の義務っていうものでしょう。

また救急搬送、急性期病院、リハビリ病院のスタッフの皆々様、お世話になりました。ちなみに急性期病院は横浜労災病院、リハビリ病院は新横浜リハビリテーション病院でした。