OpenCVを用いてARをXcodeで作ろうとしている初心者です。とあるサイトを参考にさせていただきながらやっていたのですが、OpencvWrapper.mmの” cvtColor(mat, mat, CV_RGBA2RGB);”のところで Use of undeclared identifier 'CV_RGBA2RGB'; did you mean 'COLOR_RGBA2RGB'? というエラーが出てしまいました。
ネットでエラーを調べたのですが、バージョンを更新やらスペルの確認とでたのですが、エラーが解消しない状態です。ご教授いただけると幸いです。
参考にさせていただいたサイト
//OpencvWrapper.mm #import "OpencvWrapper.h" #import <opencv2/opencv.hpp> #import <opencv2/imgcodecs/ios.h> #import <opencv2/aruco.hpp> #import "OpencvWrapper.h" using namespace cv; using namespace std; @implementation OpencvWrapper - (UIImage *)image { return _image; }; - (NSDictionary *)markerDict { return _markerDict; } - (void)detectARMarker:(UIImage *)input_img { Mat mat; UIImageToMat(input_img, mat); cvtColor(mat, mat, CV_RGBA2RGB); vector<int> ids; vector<vector<Point2f> > corners; // ArUcoモジュールに事前定義されたARマーカーの辞書を取得する cv::Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(aruco::DICT_6X6_250); // detectMarkers でARマーカーを検出する // ids に ARマーカーのID、corners に ARマーカーの座標を格納する aruco::detectMarkers(mat, dictionary, corners, ids); // mat (元の画像) に 検出されたARマーカーを描画する if (ids.size() > 0) aruco::drawDetectedMarkers(mat, corners, ids); // draw bounding boxes. // Mat型の画像を Swiftで扱えるUIImage型に変換 UIImage * output_img = MatToUIImage(mat); _image = output_img; // ids と corners を {id<NSNumber>: corner<NSArray[CGPoint]>} の形式の辞書に変換してmutableDictに格納する NSMutableDictionary *mutableDict = [@{} mutableCopy]; for (int i=0; i<ids.size(); i++) { auto id = ids[i]; NSNumber* markerId = [NSNumber numberWithInt:id]; NSMutableArray* corner = [[NSMutableArray alloc] initWithCapacity:corners[i].size()]; for (auto point: corners[i]) { [corner addObject:[NSValue valueWithCGPoint:CGPointMake(point.x, point.y)]]; } mutableDict[markerId] = corner; } _markerDict = mutableDict; } @end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。