2014年6月29日日曜日

ラズベリーパイ+opencvでUSBカメラ接続(3)- 2台のカメラを接続


会社で使いたいネタがあって、ラズパイ1台で複数のカメラを表示させた場合にきちんと動くのかを検証した。まずは2台でトライ。
 使用デバイス
・USBハブ(ELECOM U2H-EG3SBK)
・USBカメラ1  USBなんでもマイクロスコープ
・USBカメラ2   BUFFALO SW20K04H

ソースは単純に1台のカメラ表示用のプログラムで必要な個所を2列しただけ。。

---------------------------------------------------------------------------------------

#include<stdio.h>
#include<highgui.h>
int main(){

  CvCapture *videoCapture1=cvCreateCameraCapture(0);
  CvCapture *videoCapture2=cvCreateCameraCapture(1);

  if(videoCapture1==NULL)
  return -1;
  char windowName1[]="camera1";
  char windowName2[]="camera2";
  cvNamedWindow(windowName1,CV_WINDOW_AUTOSIZE);
  cvNamedWindow(windowName2,CV_WINDOW_AUTOSIZE);

  while(cvWaitKey(1)==-1){
  IplImage *image1=cvQueryFrame(videoCapture1);
  IplImage *image2=cvQueryFrame(videoCapture2);

  cvShowImage(windowName1,image1);
  cvShowImage(windowName2,image2);
  }
  cvReleaseCapture(&videoCapture1);
  cvReleaseCapture(&videoCapture2);

  cvDestroyWindow(windowName1);
  cvDestroyWindow(windowName2);

return 0;
}

-----Makefile----------------------------------------------------------------------------------
CXX = g++
LDFLAGS = -lopencv_legacy -lopencv_highgui -lopencv_core -lopencv_ml -lopencv_video -lopencv_imgproc -lopencv_calib3d -lopencv_objdetect -L/usr/lib
CPPFLAGS = -O3 -I/usr/include/opencv -I/usr/include/opencv2
all : camera3
---------------------------------------------------------------------------------------


一応動作はするが、さすがにカメラの表示速度が遅い。
ここが改善できるのか。。。う~ん。


2014年6月28日土曜日

中小企業の空洞化適応


〇内容
企業の生産工場の海外移転に伴い、その工場に付随していた中小企業が苦境に陥る状況(中小企業にとっての空洞化問題)に対して、長野県の中小企業をモデルに現状を調査し、空洞化に適応していくために必要なことを提案した書籍。


・調査対象の会社の売り上げ高は、大手からの注文が中心だった20年前から、現在は売上比率が激減(多くても30%、0%の会社もちらほら)

・しかし、会社の従業員数・売上高は 20年前と同程度かむしろ増えている

・別の顧客を開拓し、減少分を補っているわけだが具体的にどのように変化したのかが焦点

・意外にも、抜本的な事業転換や飛び地で売上高を伸ばしたのではなく、もともと所有していた技術で違う分野の似たような製品に展開した

ここからがこの本の主張
・空洞化問題に直面する前からすでに営んでした事業によって新しい仕事を獲得することが大事
・既存事業からの転換は大きな事業転換ではなく、日常的なアレンジの積み重ねによる漸進的な転換になる
・新しい顧客を引き付けるコアサービスとして次の二つが重要
     ・新製品開発のコアサービス (顧客の製品に必要な部品や製造工程開発の一部な代行することで、製品とサプライチェーンの詳細設計を支援)
     ・新製品の普及に向けた供給プロセスの 整流化の一部を代行するサービス (コストダウン案の提案など)

その他、製品・工程アレンジ能力や取引関係の構築に関する記述あり。


〇感想
 企業の成功事例に関する書籍は大企業を題材にしたものが多いため、参考になりにくい部分があるように感じていたため、中小企業に視点をあてた点に関しては興味深い書籍。
ただし、300ページに及ぶため、ちょっと読んだだけではわかりにくい。

また、空洞化に対しての提案は、それってどこの会社もやってることでは?と感じるものもあり、自分に立ち返って考えるといまいち何を改善するればよいのかしっくりこないのが正直なところ。
大きな事業転換ではなく漸進的な転換が重要という点はなるほどと思ったが、中小企業の場合、体力的にそういった手法しか取れないのが現実で、たまたま顧客から自社にとって扱いやすい製品をお願いされ、もともとの技術がはまったというようにも感じる。最近は展示会なども盛んにやってるので、こういうところで顧客を獲得している場合もあるように思う。
 他に気になるのは生き残った会社のみの分析である点。おそらく残念ながら廃業に至った会社もあるだろうし、それらの会社と何が違ったのかは分からない。
まぁこの手の書籍は 成功事例しか分析しようがないのでしょうがないが。。




















〇感想

2014年6月26日木曜日

ラズベリーパイ+opencvでUSBカメラ接続(2)


別のページを参考に若干違うソースで再トライ。
こちらのソースであれば、遅延はあるが反応はそこそこ良かった。
前のページは標準出力でフレームの幅・高さを表示させようとしたのが悪かったのか??
何か余計なことをしていそう。。
もしくは、インターフェース2014年1月号に「コンパイル時になるべく強い最適化オプション(-O3など)をつけること」という記述があるが、この辺が関係しているのか??
やり始めて間もないのでよくわからない。。。。

--------------------------------------------------------
#include<stdio.h>
#include<highgui.h>
int main(){
 
  CvCapture *videoCapture1=cvCreateCameraCapture(0);

  if(videoCapture1==NULL)
  return -1;

  char windowName1[]="camera1";
  cvNamedWindow(windowName1,CV_WINDOW_AUTOSIZE);

  while(cvWaitKey(1)==-1){
  IplImage *image1=cvQueryFrame(videoCapture1);
  cvShowImage(windowName1,image1);
  }

  cvReleaseCapture(&videoCapture1);
  cvDestroyWindow(windowName1);
return 0;
}

--------------------------------------------------------
今回はMakefileを使用
 CXX = g++
LDFLAGS = -lopencv_legacy -lopencv_highgui -lopencv_core -lopencv_ml -lopencv_video -lopencv_imgproc -lopencv_calib3d -lopencv_objdetect -L/usr/lib
CPPFLAGS = -O3 -I/usr/include/opencv -I/usr/include/opencv2
all : camera3

--------------------------------------------------------








2014年6月25日水曜日

ラズベリーパイ+opencvでUSBカメラ接続


ラズベリーパイにUSBカメラをつないでopencvで画像処理ができないかトライ中。
使用したカメラはUSBなんでもマイクロスコープ。
割と小さいものが見たかったのでこれを選択。
ただ、それなりに近づけないといけないので、1万円以内でcマウントのレンズ付けれてラズパイで認識してくれるものがあるとよいのだが、探し中。。


まずは他のブログで紹介されているソースを参考にプログラム。

---------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include<stdio.h>
using namespace cv;
int main (int argc, char **argv)
{
double width;  
double height;
CvCapture *capture = NULL;IplImage *frame = 0;

int ch;

capture = cvCreateCameraCapture(-1);width = cvGetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH);
height = cvGetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT);

  //  width=320;height=240;

  //   width=160;height=120;

  cvSetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH,width);
  cvSetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT,height);
  while (1) {  frame = cvQueryFrame (capture);
  cvShowImage ("Capture", frame);
  ch = cvWaitKey ( 1.0 );

          if (ch == '\x1b') {
          break;
          }
   
    fprintf( stderr, "width = %f, height = %f, fps = %f\n", width, height, fps );
//stderr = standrd errer output

   }
  cvReleaseCapture (&capture);
  cvDestroyWindow ("Capture");
  return 0;
}
------------------------------------------------------------------
実行コマンド

 g++ -o a.out camera.c -I/usr/include/opencv2 -I/usr/include/opencv -L/usr/lib  -lopencv_imgproc -lopencv_highgui -lopencv_core

 ---------------------------------------------------------------------
フレームの幅、高さを特に指定せずに実行すると、(640,480)になる。
一応動くが、早い動作にはついていけない。

cvSetCaptureProperty でフレーム幅・高さを小さくするとそれなりに早くなるけど、表示ウインドウが小さくなって見にくい。。う~ん。

 ラズベリーパイの処理能力の問題かと思ったが、guvcviewなら特に遅延なく動くので、
opencvのプログラムの問題なのか??
それなりに追従性はほしいのだが、画像処理に行く前の時点でつまずき気味。。。







2014年6月22日日曜日

起業家に学ぶ予測不能な未来の生き抜き方

○内容
これからは今まで以上に予測が難しいことが増えてくるので、分析に
時間をかけすぎたり、商品が売れるのか売れないのかを議論するのは時間の無駄になる可能性高い。今から解決しようとする問題が予測可能なのかを判断してアプローチの仕方を変えないとだめですよ

○キーワード
・プリディクションとクリアクション (本書での造語)。
プリディクションは、未来は過去からの連続で今後も十分に予測可能な場合は目標と計画を立てて実行すること。リスクを避け、プラスの収益になるように考えることが前提。
生産計画などはおおむねこちらか。
一方で、クリアクションの考え方は将来の予測が難しい事例に対して、まずやれることを試してみること(小さく賢い一歩)が重要。試した結果を許容損害に対してどうなのかを確認し、次の一歩を決めていく手法。市場の理論や予測、戦略にこだわらず、アイディアを実現するためにきちっとした道筋を定めないことで、予想外の問題や障害をチャンスと考えられるようにする。
 新規の製品開発などは売れるか売れないかを色々考えるより、まずは手持ちのリソースで可能なものを作ってみて、客の意見を聞くほうが早い。ここでの反応をもとに軌道修正をするといったところか。
 
  表面的にはPDCAサイクルを回すのとあまりかわらないように感じるが、目標に対する考え方や問題の捉え方に違いがあるみたい。


○感想
 
 
 予測が難しい場合は「まずやってみましょうよ」という極シンプルな考え方だが、意外とできていなように思う。
以前、参加した新製品開発の打ち合わせで、色々と予想を立てて、それに対してみんだが色々と意見を述べるが結局はやってみなけりゃわからないことを永遠と議論しただけだったのではと思う。会社だとどうしても許容損害とか目標が曖昧なまま進めるのは理解が得られないだろうし・・・。
予想が難しい内容に対してはほどほどの議論で止めるようにこころがけよう。