目次
today: ?
yesterday: ?
total: ?
更新履歴
2011/01/25
- tarの更新
- 出力結果画像の変更
- ファイル構成の更新
- mainの更新
2011/02/21
- プログラムの更新(詳細はtar.bzの中のReadmeを参照)
2011/02/24
- プログラムの更新(詳細はtar.bzの中のReadmeを参照)
ファイル構成と簡単な説明
- 更新履歴など
- OpenCV関連の関数
- ファイル入出力関係の関数
- data/
- data/init/: 設定ファイルを置く場所
- data/init/webcamInit.dat
- data/Makefile
- data/time: 測定時間を置く場所
- data/img: 画像を置く場所
- data/img/lena.jpg
- data/img/logo.png
- data/debug/: 端末出力結果を置く場所
Readme.txt: 更新履歴はここ
- data/init/: 設定ファイルを置く場所
- include/: ライブラリ関係のリンクはここ
- include/Makefile
- include/myCV.h
- include/myLibs.h
- lib/: ライブラリ関係はここ
- lib/logSave/ 入出力関係はここ
- lib/logSave/Readme.txt: 関数の使い方
- lib/logSave/logSave.h
- lib/logSave/Makefile
- lib/logSave/saveData.c
- lib/logSave/readData.c
- lib/logSave/getTime.c
- lib/excv/: OpenCV/Libwebcam関係はここ
- lib/excv/Readme.txt: 関数の使い方
- lib/excv/Makefile
- lib/excv/cannyEdge.c
- lib/excv/libwebcam.c
- lib/excv/csub.h
- lib/excv/histogram.c
- lib/excv/houghCircle.cpp
- lib/excv/excvInit.c
- lib/excv/excvInit.h
- lib/logSave/ 入出力関係はここ
- src/
- src/Makefile
- src/main.c
main関数の流れ
/*><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><
main.c
Time-stamp: <2011-01-25 11:01:23 kato>
USBカメラから画像を取得するだけのプログラム.
カメラを検出できなかった場合は画像を読み込み表示する.
><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><*/
#include
#include
#include
/// EXCV_NOCAP or EXCV_CAP
#define
int standard(char *filename);
int main(int argc, char** argv){
char* filename = argc == 2 ? argv[1] : (char*)"../data/img/lena.jpg";
standard(filename);
return 0;
}
int standard(char *filename){
int key;
/// OpenCV structure
CvSize imgSize = {640, 480};
CvCapture* cap;
IplImage* src = cvCreateImage(imgSize, IPL_DEPTH_8U, 3);
IplImage* gray = cvCreateImage(imgSize, IPL_DEPTH_8U, 1);
IplImage* hist;
/// original structure
GetTime gt = {0};
PointNum pn = {0};
if(!(cap = cvCaptureFromCAM(0))){
puts("[ERROR] Camera is not found !!");
IplImage* jpgImg;
excvMakeWin("Sample image", EXCV_AUTO);
if((jpgImg = cvLoadImage(filename, 1)) == NULL){
puts("[ERROR] Image is not found !!");
return -1;
}
excvSaveImg(jpgImg, "jpg");
excvCanny(jpgImg);
pn = excvHoughC(jpgImg);
cvShowImage("Sample image", jpgImg);/// show capture image
key = excvWaitKey(0);
excvSaveImg(jpgImg, "jpg");
cvReleaseImage(&jpgImg);
cvReleaseImage(&gray);
cvReleaseImage(&hist);
return 0;
}
CHandle hDevice = webcamInitCamParam("video0", 0);/// libwebcam init
excvMakeWin("USB camera capture", 0);/// make window
excvMakeWin("Histogram image", EXCV_AUTO);/// make window
while(1){
getTime(0, 0, >);/// time check start
src = cvQueryFrame(cap);/// USB camera capture
cvCvtColor(src, gray, CV_RGB2GRAY);
getTime(0, 1, >);/// time check end
getTime(1, 0, >);/// time check start
hist = excvHistogram(hDevice, gray);
excvCanny(src);
pn = excvHoughC(src);
getTime(1, 1, >);/// time check end
getTime(2, 0, >);/// time check start
cvShowImage("USB camera capture", src);/// show capture image
cvShowImage("Histogram image", hist);/// show capture image
getTime(2, 1, >);/// time check end
key = excvWaitKey(2);
gt.loop++;
if(key == EXCV_BREAK || key == EXCV_CAP || gt.flag == 1)
break;
if(key > WC_CAM){
webcamPanTilt(hDevice, key, 1024);
excvSaveImg(src, "jpg");
}
}
excvSaveImg(src, "jpg");
excvSaveImg(gray, "jpg");
excvSaveImg(hist, "jpg");
saveTime(>);
webcamReleaseDevice(hDevice);
cvReleaseImage(&src);
cvReleaseImage(&gray);
cvReleaseImage(&hist);
cvReleaseCapture(&cap);
return 0;
}
結果(USBカメラなしの場合)
- 入力画像
- 出力画像
- excvCannyで縁取り
- excvHoughCで円を検出