non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

Node.jsでOpenCV.jsを使うためにimreadを自前で実装するには

この記事は@kjunichiの2017年パーソナルアドベントカレンダーの9日目の記事です 。

背景

OpenCV.jsをブラウザで使う分には、imreadやimwriteがDOM要素をしている実装に なっているので、便利に使えるが、node.jsでサーバサイドやCLIとして使うと、 jsdom+node-canvasでいけるかと思いきや、セグフォしたり、WindowsだとJPEGが 使えるnode-canvasだとjsdomに認識されず辛い状況。

imreadを自前で実装

昔、OpenCVのMatはBGRの順で並んでいた気がしたが、それは WebCamの入力結果がそういう順番なだけなのかも、とりあえず、 RGBの順番で行けた。

const src = new cv.Mat(128,128,cv.CV_8UC3);
  
  for(let j = 0; j < 128; j++){ 
    for(let i = 0; i < 32; i++) {
      src.data[j * src.cols * src.channels() + i * src.channels()]=j*2;
      src.data[j * src.cols * src.channels() + i * src.channels()+1]=i*64;
      src.data[j * src.cols * src.channels() + i * src.channels()+2]=i*32;
    }
  }

関連記事

3年前の記事

1年前の記事

Vimで使っているプラグインマネージャはなんだったっけ

この記事は@kjunichiの2017年パーソナルアドベントカレンダーの8日目の記事です 。

背景

たまたま2017からプライベートでWindows環境で作業をメインにするようになった折、Vimが:terminal対応され、 WindowsでもコマンドプロンプトVim内で使えるようになったと聞いたあたりからVimをビルドして使うようになった。

もともとはViは使うが、Emacsでほぞ細と暮らし、最近はAtomからVS Codeへやってきた。

で最近Windows版も色つきの絵文字に対応したとの話題もあり、また頻繁に触ってる。

ここ数日OpenCV.jsのWASM版をnode.jsで動かすことに執念燃やしてて、VimJavaScriptをES6以降の書き方で 良い感じに編集したくなり、それ系のプラグインを入れようとして、 はたと気づいた

Vimプラグインの仕組み何を使ってるんだと。

複数あって、適当に選んだ記憶だけはあるので。。。

GoとRustはなんかプラグイン入れてる気がしてるが

なんかVimプラグイン入れたけど忘れたから調べる

cat ~/.vimrc
call plug#begin('~/.vim/plugged')

この文字列を検索して、どうやら

だったらしい

関連記事

7年前の記事

jsdom+node-canvasでOpenCV.js(WASM)を動かしたらセグフォ喰らった

この記事は@kjunichiの2017年パーソナルアドベントカレンダーの7日目の記事です 。

macOSだとimreadでセグフォされた。

Windowsだとimgタグの画像の読み込みすらできない。

当面はcv.Matを直にアクセスするという面倒な使い方でしのがなければならないのかも。。。

Windowsで画像が読めなかった訳

npm install canvas@next

で入れないとWindowsではJPEGが読めない。

jsdomはcanvasの2.0系に非対応!?

JPEGを読めるようなったが、今度はjsdomでcanvasモジュールを 認識できなった模様。。

Error: Not implemented: HTMLCanvasElement.prototype.getContext (without installing the canvas npm package)
    at module.exports (C:\Users\kjw_j\Documents\work\nodejs\opencvjs\node_modules\jsdom\lib\jsdom\browser\not-implemented.js:9:17)

関連記事

6年前の記事

4年前の記事

3年前の記事

1年前の記事

1年後の記事