Ask Your Question

Revision history [back]

Problem accessing descriptors after extraction

Hi,

I'm writing a simple program that extracts descriptors from images and writes them to files.

I'm saving the descriptors in a Mat variable, but I'm getting wrong values when trying to access them.

Here is the code:

            string s = format("%s\\%s\\img%d.ppm", dataset_dir.c_str(), dsname, k);
            Mat imgK = imread(s, 0);
            if( imgK.empty() )
                break;

            detector->detect(imgK, kp);
            descriptor->compute(imgK, kp, desc);

            //writing the descriptors to a file
            char fileName[512];
            sprintf(fileName,"C:\\BinaryDescriptors\\OpenCVRes\\%s\\%s\\Descriptors%d.txt",descriptor_name,dsname,k);
            FILE * fid;
            fid=fopen(fileName,"a+");
            for (int ix=0; ix< kp.size(); ix++){

                fprintf(fid,"%f \t%f", kp[ix].pt.x,kp[ix].pt.y);
                fprintf(fid, "\t1 \t0 \t1");
                fflush(fid);
                //writing the descriptor
                for (int jx=0;jx<desc.cols;jx++){
                    int gil = desc.at<int>(ix,jx);
                    printf("AAAA %d", gil);
                    fprintf(fid,"\t%d",desc.at<int>(ix,jx));
                    fflush(fid);
                }
            }
            fprintf(fid,"\n");
            fclose(fid);

The line where I'm accessing the descriptors matrix is int gil = desc.at int(ix,jx); Is there something I'm doing wrong?

Any help will be greatly appreciated, as I'm quite stuck :)

Thanks,

Gil.

Problem accessing descriptors after extractionMat

Hi,

I'm writing a simple program that extracts descriptors from images and writes them to files.

I'm saving the descriptors in a Mat variable, but I'm getting wrong values when trying to access them.

Here is the code:

            string s = format("%s\\%s\\img%d.ppm", dataset_dir.c_str(), dsname, k);
            Mat imgK = imread(s, 0);
            if( imgK.empty() )
                break;

            detector->detect(imgK, kp);
            descriptor->compute(imgK, kp, desc);

            //writing the descriptors to a file
            char fileName[512];
            sprintf(fileName,"C:\\BinaryDescriptors\\OpenCVRes\\%s\\%s\\Descriptors%d.txt",descriptor_name,dsname,k);
            FILE * fid;
            fid=fopen(fileName,"a+");
            for (int ix=0; ix< kp.size(); ix++){

                fprintf(fid,"%f \t%f", kp[ix].pt.x,kp[ix].pt.y);
                fprintf(fid, "\t1 \t0 \t1");
                fflush(fid);
                //writing the descriptor
                for (int jx=0;jx<desc.cols;jx++){
                    int gil = desc.at<int>(ix,jx);
                    printf("AAAA %d", gil);
                    fprintf(fid,"\t%d",desc.at<int>(ix,jx));
                    fflush(fid);
                }
            }
            fprintf(fid,"\n");
            fclose(fid);

The line where I'm accessing the descriptors matrix is int gil = desc.at int(ix,jx); Is there something I'm doing wrong?

Any help will be greatly appreciated, as I'm quite stuck :)

Thanks,

Gil.