diff --git a/examples/10.x/mrz/CMakeLists.txt b/examples/10.x/mrz/CMakeLists.txt index a7389cb..1df38b7 100644 --- a/examples/10.x/mrz/CMakeLists.txt +++ b/examples/10.x/mrz/CMakeLists.txt @@ -85,6 +85,11 @@ if(WINDOWS) COMMAND ${CMAKE_COMMAND} -E copy_directory "${PROJECT_SOURCE_DIR}/../sdk/platforms/win/bin/" $) +else() + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${PROJECT_SOURCE_DIR}/../sdk/platforms/linux/" + $) endif() add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD diff --git a/examples/10.x/mrz/README.md b/examples/10.x/mrz/README.md index 90aa12f..4bcc5e0 100644 --- a/examples/10.x/mrz/README.md +++ b/examples/10.x/mrz/README.md @@ -20,8 +20,12 @@ This C/C++ sample demonstrates how to implement **MRZ (Machine Readable Zone)** mkdir build cd build cmake .. + # For OpenCV + # cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DENABLE_OPENCV=TRUE .. cmake --build . ``` + + ## Blog [Passport MRZ Recognition with Dynamsoft C++ OCR SDK](https://www.dynamsoft.com/codepool/passport-mrz-recognition-cpp-windows-linux.html) diff --git a/examples/10.x/mrz/main.cpp b/examples/10.x/mrz/main.cpp index 61a406d..3584de5 100644 --- a/examples/10.x/mrz/main.cpp +++ b/examples/10.x/mrz/main.cpp @@ -240,18 +240,23 @@ int main(int argc, char *argv[]) float costTime = 0.0; int errorCode = 0; - CCapturedResult *result = cvr->Capture(pszImageFile); - CParsedResult *results = result->GetParsedResult(); - - if (results) + CCapturedResult *captureResult = cvr->Capture(pszImageFile); + if (captureResult) { - for (int i = 0; i < results->GetItemsCount(); i++) + CParsedResult *parsedResult = captureResult->GetParsedResult(); + if (parsedResult) { - const CParsedResultItem *item = results->GetItem(i); - MRZResult result; - result.FromParsedResultItem(item); - cout << result.ToString() << endl; + for (int i = 0; i < parsedResult->GetItemsCount(); i++) + { + const CParsedResultItem *item = parsedResult->GetItem(i); + MRZResult result; + result.FromParsedResultItem(item); + cout << result.ToString() << endl; + } + parsedResult->Release(); } + + captureResult->Release(); } } diff --git a/examples/10.x/mrz/maincv.cpp b/examples/10.x/mrz/maincv.cpp index 009c95c..4b1ef1b 100644 --- a/examples/10.x/mrz/maincv.cpp +++ b/examples/10.x/mrz/maincv.cpp @@ -211,6 +211,11 @@ class MyCapturedResultReceiver : public CCapturedResultReceiver virtual void OnParsedResultsReceived(CParsedResult *pResult) { + if (pResult == nullptr) + { + return; + } + const CFileImageTag *tag = dynamic_cast(pResult->GetOriginalImageTag()); if (pResult->GetErrorCode() != EC_OK) @@ -232,6 +237,8 @@ class MyCapturedResultReceiver : public CCapturedResultReceiver } cout << endl; + + pResult->Release(); } };