<commit_before># VM Runtime OpenCV demo

## About

This sample application demonstrates the use of [OpenCV][1] using App
Engine's VM Runtime feature. The application allows a user to upload
an image of a Sudoku puzzle. The app then solves the puzzle and displays
the solution on the image.

Code was used and modified from the following sources:

- [OpenCV Python Tutorials blog][2]
- [<NAME>'s blog][3]
- [OpenCV's square detector sample][4]


## Deployment

First, edit the bucket name in `config.py` to the name of a Google Cloud Storage bucket for which your app has been given write permissions via its service account.  See [Using Service Accounts for Authentication](https://developers.google.com/storage/docs/authentication#service_accounts) for more information.

This demo uses two [Modules](https://developers.google.com/appengine/docs/python/modules/), defined in `app.yaml` (the default module) and `backend.yaml` (the 'solver' module).  Change the app name in both those files to the name of your app.

To deploy, do, the following.  First, update the modules as follows:

    <path_to_sdk>/appcfg.py update -s preview.appengine.google.com app.yaml backend.yaml

(You can also deploy them individually if you like).

Then, update the app's module dispatch definitions as follows.  You only need to do this step more than once if you change the app's module routing information.

    <path_to_sdk>/appcfg.py update_dispatch -s preview.appengine.google.com  <proj_dir>

[1]: http://opencv.org/
[2]: http://opencvpython.blogspot.com/
[3]: http://norvig.com/sudoku.html
[4]: https://github.com/Itseez/opencv/blob/master/samples/python2/squares.py<commit_msg>instructions fix in the readme<commit_after># VM Runtime OpenCV demo

## About

This sample application demonstrates the use of [OpenCV][1] using App
Engine's VM Runtime feature. The application allows a user to upload
an image of a Sudoku puzzle. The app then solves the puzzle and displays
the solution on the image.

Code was used and modified from the following sources:

- [OpenCV Python Tutorials blog][2]
- [<NAME>'s blog][3]
- [OpenCV's square detector sample][4]


## Deployment

First, edit the bucket name in `config.py` to the name of a Google Cloud Storage bucket for which your app has been given write permissions via its service account.  See [Using Service Accounts for Authentication](https://developers.google.com/storage/docs/authentication#service_accounts) for more information.

This demo uses two [Modules](https://developers.google.com/appengine/docs/python/modules/), defined in `app.yaml` (the default module) and `backend.yaml` (the 'solver' module).
Change the app name in both those files to the name of your app.
Do the same in `dispatch.yaml`.

To deploy, do, the following.  First, update the modules as follows:

    <path_to_sdk>/appcfg.py update -s preview.appengine.google.com app.yaml backend.yaml

(You can also deploy them individually if you like).

Then, update the app's module dispatch definitions as follows.  You only need to do this step more than once if you change the app's module routing information.

    <path_to_sdk>/appcfg.py update_dispatch -s preview.appengine.google.com  <proj_dir>

[1]: http://opencv.org/
[2]: http://opencvpython.blogspot.com/
[3]: http://norvig.com/sudoku.html
[4]: https://github.com/Itseez/opencv/blob/master/samples/python2/squares.py
{'fraction_non_alphanumeric': 0.09456264775413711, 'fraction_numerical': 0.005319148936170213, 'mean_word_length': 4.486223662884927, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4274974', 'n_tokens_mistral': 993, 'n_tokens_neox': 966, 'n_words': 408}