Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions modules/hdf/src/hdf5.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -441,10 +441,13 @@ void HDF5Impl::atread(String* value, const String& atlabel)
CV_Error_(Error::StsInternal, ("Attribute '%s' is not of string type!", atlabel.c_str()));
}
size_t size = H5Tget_size(atype);
*value = String(size, 0); // allocate space
AutoBuffer<char> buf(size);

hid_t atype_mem = H5Tget_native_type(atype, H5T_DIR_ASCEND);
H5Aread(attr, atype_mem, const_cast<char*>(value->c_str()));
H5Aread(attr, atype_mem, buf.data());
if (size > 0 && buf[size - 1] == '\0')
size--;
value->assign(buf.data(), size);

H5Tclose(atype_mem);
H5Tclose(atype);
Expand Down
24 changes: 21 additions & 3 deletions modules/hdf/test/test_hdf5.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -284,9 +284,27 @@ TEST_F(HDF5_Test, test_attribute_String)

m_hdf_io->atwrite(attr_value, attr_name);

String expected_attr_value;
m_hdf_io->atread(&expected_attr_value, attr_name);
EXPECT_EQ(attr_value.compare(expected_attr_value), 0);
String got_attr_value;
m_hdf_io->atread(&got_attr_value, attr_name);
EXPECT_EQ(attr_value, got_attr_value);

m_hdf_io->close();
}

TEST_F(HDF5_Test, test_attribute_String_empty)
{
reset();

String attr_name = "test-empty-string";
String attr_value;

m_hdf_io = hdf::open(m_filename);

m_hdf_io->atwrite(attr_value, attr_name);

String got_attr_value;
m_hdf_io->atread(&got_attr_value, attr_name);
EXPECT_EQ(attr_value, got_attr_value);

m_hdf_io->close();
}
Expand Down
8 changes: 0 additions & 8 deletions modules/text/include/opencv2/text/ocr.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -290,14 +290,6 @@ class CV_EXPORTS_W OCRHMMDecoder : public BaseOCR
@param mode HMM Decoding algorithm. Only OCR_DECODER_VITERBI is available for the moment
(<http://en.wikipedia.org/wiki/Viterbi_algorithm>).
*/
static Ptr<OCRHMMDecoder> create(const Ptr<OCRHMMDecoder::ClassifierCallback> classifier,// The character classifier with built in feature extractor
const std::string& vocabulary, // The language vocabulary (chars when ASCII English text)
// size() must be equal to the number of classes
InputArray transition_probabilities_table, // Table with transition probabilities between character pairs
// cols == rows == vocabulary.size()
InputArray emission_probabilities_table, // Table with observation emission probabilities
// cols == rows == vocabulary.size()
decoder_mode mode = OCR_DECODER_VITERBI); // HMM Decoding algorithm (only Viterbi for the moment)

CV_WRAP static Ptr<OCRHMMDecoder> create(const Ptr<OCRHMMDecoder::ClassifierCallback> classifier,// The character classifier with built in feature extractor
const String& vocabulary, // The language vocabulary (chars when ASCII English text)
Expand Down
10 changes: 0 additions & 10 deletions modules/text/src/ocr_hmm_decoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -665,16 +665,6 @@ class OCRHMMDecoderImpl : public OCRHMMDecoder
}
};

Ptr<OCRHMMDecoder> OCRHMMDecoder::create( Ptr<OCRHMMDecoder::ClassifierCallback> _classifier,
const string& _vocabulary,
InputArray transition_p,
InputArray emission_p,
decoder_mode _mode)
{
return makePtr<OCRHMMDecoderImpl>(_classifier, _vocabulary, transition_p, emission_p, _mode);
}


Ptr<OCRHMMDecoder> OCRHMMDecoder::create( Ptr<OCRHMMDecoder::ClassifierCallback> _classifier,
const String& _vocabulary,
InputArray transition_p,
Expand Down