本(図書名は失念しましたが「Number Plate Recognition using SVM and Neural Network」という章のもの)に載っていたナンバープレート認識プログラムを動かそうと思い写しましたが、載っていない部分(includeやカメラからの画像読み込みの為のコード等)が分からず自分なりに調べて付け加えた結果エラーがたくさん出ている状態です。
他のサンプルコードは動き、パスの設定も正しいと思います。
C++もopencvも初心者のため教えて頂けたら嬉しいです。
以下の「//convert image to gray」からが本に書いてあったもので章の終わりまでの分を全てとりあえず写しました。
コード
#include<opencv2/opencv.hpp> #include<opencv2/core/core.hpp> //Mat等? #include<opencv2/dnn/dnn.hpp> #include<opencv2/ml.hpp> #include<opencv2/highgui.hpp> #include<vector> #include<stdio.h> #include<string.h> using namespace std; using namespace cv; int main(int argc, char* argv[]) { CvCapture* src; // ビデオキャプチャ宣言 IplImage *frame; // 画像リソース宣言 src = cvCaptureFromCAM(0); // 映像取得(カメラ映像) if (src == NULL) { printf("映像が取得できません。\n"); cvWaitKey(0); return -1; } while (1) { frame = cvQueryFrame(src); if (frame == NULL) break; cvReleaseImage(&frame); Mat input; //convert image to gray(以下本に記載されているコード) Mat img_gray; cv::cvtColor(input, img_gray, CV_BGR2GRAY); cv::blur(img_gray, img_gray, Size(5, 5)); void Sobel(InputArray src, OutputArray dst, int ddepth, int xorder, int yorder, int ksize = 3, double scale = 1, double delta = 0, int borderType = BORDER_DEFFAULT); //Find vertical lines. Car plates have high density of vertical lines Mat img_sobel; Sobel(img_gray, img_sobel, CV_8U, 1, 0, 3, 1, 0); //threshold image Mat img_threshold; cv::threshold(img_sobel, img_threshold, 0, 255, CV_THRESH_OTSU + CV_THRESH_BINARY); Mat element = cv::getStructuringElement(MORPH_RECT, Size(17, 3)); morphologyEx(img_threshold, img_threshold, CV_MOP_CLOSE, element); //Find contours of possibles plates vector<vector<Point>> contours; findContours(img_threshold, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
エラー
識別子 "VERTICAL" が定義されていません "verifySizes" が定義されていません 識別子 "TrainData" が定義されていません 識別子 "SVM" が定義されていません 識別子 "ROW_SAMPLE" が定義されていません 識別子 "ROW_SAMPLE" が定義されていません 識別子 "resultResized" が定義されていません 識別子 "ProjectedHistgram" が定義されていません 識別子 "pointsInterest" が定義されていません 識別子 "Plate" が定義されていません 識別子 "plate" が定義されていません 識別子 "ocr" が定義されていません 識別子 "numCharacters" が定義されていません 識別子 "mask" が定義されていません 識別子 "mask" が定義されていません 識別子 "input_image" が定義されていません 識別子 "input_image" が定義されていません 識別子 "input" が定義されていません 識別子 "HORIZONTAL" が定義されていません 識別子 "BORDER_DEFFAULT" が定義されていません 識別子 "ann" が定義されていません 識別子 "ann" が定義されていません 数字の必要とされる末尾の後に余分なテキストがあります 式にはクラス型が必要です 式が必要です 宣言が必要です . 型名は使用できません 名前の後に '::~' を付けることができるのはクラス名または名前空間名だけです . パラメーター "TrainData" は型の名前ではありません オーバーロードされた関数 "data" のどのインスタンスが対象であるかを特定できません この宣言にはストレージ クラスまたは型指定子がありません . この定数式には、必要な型 "unsigned int" ではなく型 "const char *" が指定されています class "cv::Mat_<uchar>" にメンバー "LineIterator" がありません class "cv::Mat" にメンバー "seros" がありません ';' が必要です . ')' が必要です . "findContours" があいまいです "end" があいまいです
エラーが出ている箇所が記載されたコードの外の話なので、質問欄の情報から回答するのは無理です。コンパイルエラーが起きている箇所をまずは確認してみてはどうでしょうか。
あなたの回答
tips
プレビュー