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で動かすことに執念燃やしてて、VimでJavaScriptをES6以降の書き方で 良い感じに編集したくなり、それ系のプラグインを入れようとして、 はたと気づいた
複数あって、適当に選んだ記憶だけはあるので。。。
GoとRustはなんかプラグイン入れてる気がしてるが
cat ~/.vimrc
call plug#begin('~/.vim/plugged')
この文字列を検索して、どうやら
だったらしい
関連記事
- Vimに:terminalが実装され、Windowsではコマンドプロンプトが動くと知り試してみた
- Go言語でコマンドプロンプトに画像を表示するコマンドを作って、Vimの:terminalで表示させた
- WindowsのVimが色付きの絵文字に対応したと聞いてやったがなかなか色がつかなかった件
7年前の記事
jsdom+node-canvasでOpenCV.js(WASM)を動かしたらセグフォ喰らった
この記事は@kjunichiの2017年パーソナルアドベントカレンダーの7日目の記事です 。
macOSだとimreadでセグフォされた。
Windowsだとimgタグの画像の読み込みすらできない。
当面はcv.Matを直にアクセスするという面倒な使い方でしのがなければならないのかも。。。
Windowsで画像が読めなかった訳
npm install canvas@next
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)