141 |
141 |
CvFileNode* em_node = 0;
|
142 |
142 |
CvFileNode* tmp_node = 0;
|
143 |
143 |
CvSeq* seq = 0;
|
144 |
|
CvMat **tmp_covs = 0;
|
145 |
|
CvMat **tmp_cov_rotate_mats = 0;
|
146 |
144 |
|
147 |
145 |
read_params( fs, node );
|
148 |
146 |
|
... | ... | |
156 |
154 |
CV_CALL( inv_eigen_values = (CvMat*)cvReadByName( fs, em_node, "inv_eigen_values" ));
|
157 |
155 |
|
158 |
156 |
// Size of all the following data
|
159 |
|
data_size = params.nclusters*2*sizeof(CvMat*);
|
|
157 |
data_size = params.nclusters*sizeof(CvMat*);
|
160 |
158 |
|
161 |
|
CV_CALL( tmp_covs = (CvMat**)cvAlloc( data_size ));
|
162 |
|
memset( tmp_covs, 0, data_size );
|
163 |
|
|
164 |
|
tmp_cov_rotate_mats = tmp_covs + params.nclusters;
|
165 |
|
|
|
159 |
CV_CALL( covs = (CvMat**)cvAlloc( data_size ));
|
|
160 |
memset( covs, 0, data_size );
|
166 |
161 |
CV_CALL( tmp_node = cvGetFileNodeByName( fs, em_node, "covs" ));
|
167 |
162 |
seq = tmp_node->data.seq;
|
168 |
163 |
if( !CV_NODE_IS_SEQ(tmp_node->tag) || seq->total != params.nclusters)
|
... | ... | |
170 |
165 |
CV_CALL( cvStartReadSeq( seq, &reader, 0 ));
|
171 |
166 |
for( int i = 0; i < params.nclusters; i++ )
|
172 |
167 |
{
|
173 |
|
CV_CALL( tmp_covs[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr ));
|
|
168 |
CV_CALL( covs[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr ));
|
174 |
169 |
CV_NEXT_SEQ_ELEM( seq->elem_size, reader );
|
175 |
170 |
}
|
176 |
171 |
|
|
172 |
CV_CALL( cov_rotate_mats = (CvMat**)cvAlloc( data_size ));
|
|
173 |
memset( cov_rotate_mats, 0, data_size );
|
177 |
174 |
CV_CALL( tmp_node = cvGetFileNodeByName( fs, em_node, "cov_rotate_mats" ));
|
178 |
175 |
seq = tmp_node->data.seq;
|
179 |
176 |
if( !CV_NODE_IS_SEQ(tmp_node->tag) || seq->total != params.nclusters)
|
180 |
|
CV_ERROR( CV_StsParseError, "Missing or invalid sequence of rotated cov. matrices" );
|
|
177 |
CV_ERROR( CV_StsParseError, "Missing or invalid sequence of covariance matrices" );
|
181 |
178 |
CV_CALL( cvStartReadSeq( seq, &reader, 0 ));
|
182 |
179 |
for( int i = 0; i < params.nclusters; i++ )
|
183 |
180 |
{
|
184 |
|
CV_CALL( tmp_cov_rotate_mats[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr ));
|
|
181 |
CV_CALL( cov_rotate_mats[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr ));
|
185 |
182 |
CV_NEXT_SEQ_ELEM( seq->elem_size, reader );
|
186 |
183 |
}
|
187 |
184 |
|
188 |
|
covs = tmp_covs;
|
189 |
|
cov_rotate_mats = tmp_cov_rotate_mats;
|
190 |
|
|
191 |
185 |
ok = true;
|
192 |
186 |
__END__;
|
193 |
187 |
|