spresense cameraサンプルコードについて
spresenseでカメラモジュールを繋げて以下のサンプルコードをArduino IDEにて実行すると、
「variable or field 'CamCB' declared void」というエラー文が出ます。
void CamCB(CamImage img)
のところがエラーらしいのですがどう変更すればいいのかわかりません。
プログラミングに詳しい方回答お願いします。
//#include [SDHCI.h]
//#include [stdio.h]
//#include [Camera.h] /*Cameraライブラリを利用する場合必要*/
//#define BAUDRATE (115200)
SDClass theSD;
int take_picture_count = 0; /*SDCardに書き出されるファイル名と作成するファイル数の上限の変数*/
/*Previewコールバック*/
/*ビデオフレームがキャプチャされたときのカメラライブラリからのコールバック*/
void CamCB(CamImage img)
{
if(img.isAvailable())
{
/*RGB565に変換*/
img.convertPixFormat(CAM_IMAGE_PIX_FMT_RGB565);
/*startStreaming()で登録される、カメラのPreviewが出力された際に呼び出される関数になります。
この関数内では、関数の引数として取得したCamImageのインスタンスが利用可能なものかどうかのチェックを行い、
その後、ピクセルフォーマットをRGB565に変換しています。 変換後、getImgSize()とgetImgBuff()で取得したデータサイズとメモリアドレスを表示しています。
一般的には、この段階で接続したディスプレイなどにイメージデータを出力して、 カメラのファインダービューを構築します。*/
Serial.print("Image data size = ");
Serial.print(img.getImgSize(),DEC);
Serial.print(" , ");
Serial.print("buff addr = ");
Serial.print((unsigned long)img.getImgBuff(), HEX);
Serial.println("");
}
else
{
Serial.print("Failed to get video stream image\n");
}
}
/*setup()*/
void setup()
{
Serial.begin(BAUDRATE);
while(!Serial)
{
;
}
/*パラメータ無しのbegin()は
* バッファ数 = 1, 30FPS. QVGA, YUV 4:2:2フォーマット
*/
Serial.println("Prepare camera");
theCamera.begin();
/*カメラデバイスからビデオデータを受け取った場合、
* カメラライブラリのCamCBを呼び出す
*/
Serial.println("Start streaming");
theCamera.startStreaming(true. CamCB);
/*オートホワイトバランスを設定する*/
Serial.println("Set Auto white balance parameter");
theCamera.setAutoWhiteBalanceMode(CAM_WHITE_BALANCE_DAYLIGHT);
/*静止画に関するパラメータを設定する
* 次の場合はQUADVGAとJPEG
*/
Serial.println("Start streaming");
theCamera.setStillPictureImageFormat(
CAM_IMGSIZE_QUADVGA_H,
CAM_IMGSIZE_QUADVGA_V,
CAM_IMAGE_PIX_FMT_JPG);
}
void loop()
{
sleep(1);
/*必要に応じてここで静止画のフォーマットを変更することができる
*/
/*theCamera.setStillPictureImageFormat(
*CAM_IMGSIZE_HD_H,
*CAM_IMGSIZE_HD_V,
*CAM_IMAGE_PIX_FMT_JPG);
*/
/*このコードでは開始から1秒ごとに100枚の写真を撮ることができます。
*/
if(take_picture_count < 100)
{
/*静止画をとる場合
* ビデオストリームとは異なり、
* このAPIは画像データを受信するのを待ちます。
*/
Serial.println("call takePicture()");
CamImage img = theCamera.takePicture();
/*imgインスタンスの可用性をチェックする
* もし、エラーが出た場合は利用できない
*/
if(img.isAvailable())
{
/*ファイルを作成する
*/
char filename[16] = {0};
sprintf(filename, "PICT%03d.jpg", take_picture_count);
Serial.print("Save taken picture as ");
Serial.print(filename);
Serial.println("");
/*SDカードにファイル名で保存する
*/
File myFile = theSD.open(filename, FILE_WRITE);
myFile.write(img,getImgBuff(), img.getImgSize());
myFile.close();
}
take_picture_count++;
}
}