0

アプリケーション内に保存したすべての画像をプリロードするつもりです。画像のプリロードには以下が含まれます。

  1. バンドルから画像を読み取ります。
  2. opencvフレームワークからcvExtractSurfを使用してオブジェクト記述子を抽出します。
  3. IPLImageを対応するオブジェクト記述子とキーポイントとともに保存します。

CvSeq*キーとCvSeq*デスクを含む辞書の作成に問題があります。これらの値をNSMutableDictionaryに保存する方法を提案してください。

-(void) preloadImages:(NSMutableDictionary *)dictionary{
NSArray *d = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:nil];
CvSURFParams params = cvSURFParams(500, 1);
CvMemStorage* storage = cvCreateMemStorage(0);


for( int i=0;i<[d count];i++){
    NSString *searchForMe = @"myapp.app/1";
    NSString *s = [[NSString alloc] initWithString:[d objectAtIndex:i]];
    NSRange range = [s rangeOfString:searchForMe];
    if( range.location != NSNotFound ){
        NSMutableDictionary *surfDict = [[NSMutableDictionary alloc] init];
        NSString *substring = [s substringFromIndex:range.location];
        substring = [substring stringByReplacingOccurrencesOfString:@"myapp.app/" withString:@""];
        UIImage *testImage = [UIImage imageNamed:substring];
        IplImage *iplTestImage = [OpenCVUtilities CreateGRAYIplImageFromUIImage:testImage];

        CvSeq *keys = 0 ;
        CvSeq *descs = 0;
        cvExtractSURF( iplTestImage, 0, &keys, &descs, storage, params );

        [surfDict setObject:(id)testImage forKey:@"uiImage"];


        NSLog(@"Image name : %@", substring);
        [dictionary setObject:surfDict forKey:[NSString stringWithFormat:@"%d",i]];
        [dictionary setObject:(NSObject *)keys forKey:@"keys"]; // error here
        [dictionary setObject:(NSObject *)descs forKey:@"descs"]; // error here
        [surfDict release];
    }
}

}
4

1 に答える 1

0

タイプ cvseq のインスタンス変数を持つクラスを作成し、cvseq をオブジェクトに追加し、そのクラスをディクショナリに追加します。

于 2012-05-21T07:12:54.723 に答える