画処理おじさんの徒然日記

画処理おじさんの徒然日記

画像処理や一眼レフカメラに関して書きます。試したことの備忘録的に。

テスト自動化ツール

こんばんは。今日はお仕事で使った、webアプリのテスト自動化ツールの Selenium について、ちょっとだけ。

 

携わっている開発中の製品が、webブラウザで操作するのですが、そこで回数試験が必要となり、周りの勧めもあって、この度、Selenium デビューしちゃいました。

 

先輩からPythonのサンプルコードを頂いたので、なんだ!簡単じゃねぇーか!みたいなノリで始めたのが痛かった…😅

 

実際にテストシナリオを元にソースコードを組み立てて行くわけですが、段々と難しいことに気づき…。もう、付け刃な対応では正直厳しかった。あんまり真面目にwebアプリなんて作ったこと無かったし…😢もうちょっと、勉強が必要なことは分かりました。

 

でも、もうちょっと使いこなせれば、テストだけじゃなくてスクレイピングとかにも使えそうだな。

それと、ログインでポイントもらったりとかも自動でできそうだし。期待だけは高まりました!

 

ではでは😎

Kaggle 始めました

こんばんは。篭りっぱなしの生活にもすっかり慣れてきた画処理おじさんです。世間ではGWに入ったところもあるようですね。私はというと、今年も暦通りとなっておりますが。

外出自粛ということもあり、ちょっと新しいことをはじめてみようと思い、今週末から Kaggle に入門することにしました。いつかやってみたいと思っていたんですが、ちょうど良さ気な本を見つけましたので紹介します。

「Kaggle スタートブック」という、まさにこれからKaggleを始める人向けの本です。今週末までに2.4章まで読み進めましたが、 Submit までの流れとデータ分析の方法について学んでいるところです。

この本、Kaggle の初学者向けの Titanic コンペをベースに、とにかく丁寧に説明してくれています。まさに手取り足取りといった感じです。ただし、Pythonやそのライブラリについての知識がないと少し難しいのかな?と言う感じもします。

そんな方にお勧めなのが、「Python実践データ分析 100本ノック」です。

こちらの本は、Python のデータ分析に必要なライブラリの使い方について丁寧に説明しています。もしも、Python を初めて使うとか、余り慣れていないという方は、こちらの本を先に読むことをおすすめします。かく言う私も、こちらの本を先に読んでいます。買ったタイミングがたまたまこうなっただけだったんですが、順番的にはちょうど良かったです。

どちらも分かりやすく、また実践的で、データサイエンスを始めてみようって方には、大変お勧めの本となっております。ぜひ、お試しあれ。

ではでは。

f:id:noda60k:20200426230043j:plain:w400
先週ベランダから撮影した雲です

写真は先週ベランダから撮影したものです。コロナが収束したらカメラ持ってお出かけしたいなぁ…。

みんな大好きPGM

こんばんは。今宵も絶賛残業中だった画処理おじさんです。😅

突然ですが、組込みソフト開発現場の皆さん!画像ログを残す時、どんなフォーマットをご使用してますでしょうか?私がお勧めしているのは、PGMというフォーマットです。

かゆいところに手が届く、いいやつなんです!かれこれ20年来の付き合いです。

まえがき

弊社ではデバッグ中の画像保存する場合、一般的にはRAWを使っています。しかし、このRAWですが、保存する時のC/C++のコードはすこぶる単純ですが、画像ビューワで開く時、いちいちサイズだの深さだの入力するのが面倒なんですよね。かと言って、PNGやJPG等の一般的なフォーマットでの保存となると、OpenCVなどのライブラリが必要になってきます。けれども環境によってはライブラリが使えない場合もありますよね?困った困った…🤔

そんな困った状況をいとも簡単に解決してくれるのが、このPGMフォーマットなんです。😄

それではもうちょっと詳しく紹介します。

PGMとは

  • 詳細は以下のリンクに譲ります!😎

www.mm2d.net

基本情報

  • 少しは自分でも書きます😅
  • PGMは、PNM形式の1つで8bitのグレースケール 画像のこと
  • PGMとは、Portable GrayMap の略です
  • 基本的にはRAW形式ですが、プレーンテキストのヘッダを持っている
  • ヘッダには、以下の情報が書かれている
    • 種別を示すマジックナンバー
      • グレースケールのPGMは以下の2種類(他詳細は上記リンク参照)
      • P2:ASCII形式
      • P5:バイナリ形式
    • 画像サイズ(幅と高さ)
    • 輝度の最大値
  • 以下は、ASCII形式、640x480 画像のヘッダの例です
  • ASCIIの場合ヘッダの次の行に輝度値、スペース、輝度値、…と書きます
P2
# シャープの後にコメントを書けます
640 480
255

保存のサンプルコード

  • 以下に下記条件の画像保存のサンプルを載せておきます
    • サイズ、640 x 480 画素
    • 8bitグレースケール画像
    • 画像データの配列を unsigned char image[307200] とします
    • 保存形式:バイナリー
  • エラー処理などは割愛します
  • 読み込みについては、上記参考サイトの2章にありますのでご参照下さい
{
    // ファイルポインタ
    FILE *fp;

    // バイナリーモードで画像ファイルを開く
    fp = fopen("./sample.pgm", "wb" );
    
    // 種別マジックナンバー
    fprintf(fp, "P5\n");
    // 画像サイズ                        
    fprintf(fp, "640 480\n");
    // 最大輝度                   
    fprintf(fp, "255\n");                       

    // 画像データの書き込み
    fwrite(image, sizeof(unsigned char), 640*480, fp);

    // クローズ
    fclose(fp);
}

特徴

  • ソースコードが簡単
  • 保存時にライブラリ不要
  • 画像ビューワで開く時に、サイズと深さ情報などの入力が不要
  • imagej, irfanview 等の一般的な? ビューワにも対応

困ったこと

  • パワポに直接貼り付けられません!
  • 上記のImageJやirfanviewなどで一括変換も出来ますが、意外と厄介だったので、自分は簡易変換ソフト作っちゃいました(需要があれば公開します)

まとめ

  • 以上、長々とPGMについて紹介してきましたがいかがでしたか?
  • ここ読んで使ってみたいと思っていただけたら幸いです
  • 今の現場ではDSPによる画像処理をやっていますが、製品環境でのデバッグとなると、ライブラリが使えなくて困ってたので…
  • 少なくとも私の周辺ではかなり浸透しました
  • 画処理おじさんとしては久しぶりに、画像処理的な話となりました

ではでは😎

コメントも重要

後輩の指導。って程でもないですが、昔作ったソフトの改良をしてもらってます。仕様書がないのでソースに書かれたコメントが頼りになるんですが、意外と後輩氏が読み込んでてびっくり!😳

時間がなくて読めてない、リーダブルコードにも書いてありましたが、適切なコメントって重要なことも分かってきました。

今のプロジェクト、極端にコメントを書かない人がいて、ソースを変更したくても、理解するだけであっという間に時間を取られてしまうこともしばしば。

時間がない、面倒なのも分かりますが最低限は書きましょう!😅

それにしても有能後輩氏、ちょっと教えただけでサクッと新機能を実装しちゃったよ!感謝感謝。

Ubuntu に OpenCV をインストールした

UbuntuOpenCV をインストールした

  • c++OpenCVを使いたくなったので、インストールしてみました。備忘録として、書き残します。
  • 環境:Ubuntu18.04、 OpenCV3.4.6 になります。
続きを読む