├── 2423453DR33THGP.jpg ├── README.md ├── camera_client ├── README.md ├── averages │ ├── 0.png │ ├── 0.txt │ ├── 1.png │ ├── 1.txt │ ├── 2.png │ ├── 2.txt │ ├── 3.png │ ├── 3.txt │ ├── 4.png │ ├── 4.txt │ ├── 5.png │ ├── 5.txt │ ├── 6.png │ ├── 6.txt │ ├── 7.png │ ├── 7.txt │ ├── 8.png │ ├── 8.txt │ ├── 9.png │ ├── 9.txt │ ├── A.png │ ├── A.txt │ ├── B.png │ ├── B.txt │ ├── C.png │ ├── C.txt │ ├── D.png │ ├── D.txt │ ├── E.png │ ├── E.txt │ ├── F.png │ ├── F.txt │ ├── G.png │ ├── G.txt │ ├── H.png │ ├── H.txt │ ├── I.png │ ├── I.txt │ ├── J.png │ ├── J.txt │ ├── K.png │ ├── K.txt │ ├── L.png │ ├── L.txt │ ├── M.png │ ├── M.txt │ ├── N.png │ ├── N.txt │ ├── O.png │ ├── O.txt │ ├── P.png │ ├── P.txt │ ├── R.png │ ├── R.txt │ ├── S.png │ ├── S.txt │ ├── T.png │ ├── T.txt │ ├── U.png │ ├── U.txt │ ├── V.png │ ├── V.txt │ ├── W.png │ ├── W.txt │ ├── X.png │ ├── X.txt │ ├── Y.png │ ├── Y.txt │ ├── Z.png │ └── Z.txt ├── camera.py ├── main.py ├── main.py~ ├── n191.net ├── n251.net ├── nanpr.py ├── test_data │ ├── 1.jpg │ ├── 2.jpg │ ├── 3.jpg │ ├── 4.jpg │ ├── 5.jpg │ └── 6.jpg ├── tophat.py └── tophat.py~ ├── db └── ANPR.db ├── n191.net ├── n251.net ├── nanpr.py └── server ├── resources ├── html │ ├── login.html │ ├── main.js │ ├── mainpage.html │ └── mainpage.html~ └── js │ └── main.js~ ├── server.py └── server.py~ /2423453DR33THGP.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/2423453DR33THGP.jpg -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # anpr 2 | The ANPR(Automatic Number Palte Recognizer) is a opensource project created to assist local communities to monitor the traffic entering and leaving their community. 3 | 4 | The current scope of the project is to capture vehicles and log each numberplate into the ANPR database which alows for look ups at later stages. 5 | 6 | Current Features 7 | ================ 8 | - Python 2.7 9 | - Potgres 9.4 10 | - Video capturing for IP Cameras 11 | - Proccesing of Still Images and retreval of Numberplates 12 | - Saving of data to a server 13 | - Cherrypy Server serving up search results 14 | 15 | 16 | Basic Examples and use command 17 | ============================== 18 | Working examples can be found in the examples direcotry. 19 | 20 | Project Structure 21 | ================= 22 | Teh folder structure is as follows. The project is split up into 4 major folder namely db,example,client_camera and server. 23 | The db folder contains all related database files. 24 | The folder client_camera contains all camera aquisition as well as image proccesing files. 25 | The folder server contains all files relating to serving the ANPR data to a webservice. 26 | The examples folder contains examples on how to run the code. 27 | 28 | ├── camera_client 29 | │   ├── averages 30 | │   │   ├── 0.png 31 | │   │   ├── 0.txt 32 | │   │   ├── 1.png 33 | │   │   ├── 1.txt 34 | │   │   ├── 2.png 35 | │   │   ├── 2.txt 36 | │   │   ├── 3.png 37 | │   │   ├── 3.txt 38 | │   │   ├── 4.png 39 | │   │   ├── 4.txt 40 | │   │   ├── 5.png 41 | │   │   ├── 5.txt 42 | │   │   ├── 6.png 43 | │   │   ├── 6.txt 44 | │   │   ├── 7.png 45 | │   │   ├── 7.txt 46 | │   │   ├── 8.png 47 | │   │   ├── 8.txt 48 | │   │   ├── 9.png 49 | │   │   ├── 9.txt 50 | │   │   ├── A.png 51 | │   │   ├── A.txt 52 | │   │   ├── B.png 53 | │   │   ├── B.txt 54 | │   │   ├── C.png 55 | │   │   ├── C.txt 56 | │   │   ├── D.png 57 | │   │   ├── D.txt 58 | │   │   ├── E.png 59 | │   │   ├── E.txt 60 | │   │   ├── F.png 61 | │   │   ├── F.txt 62 | │   │   ├── G.png 63 | │   │   ├── G.txt 64 | │   │   ├── H.png 65 | │   │   ├── H.txt 66 | │   │   ├── I.png 67 | │   │   ├── I.txt 68 | │   │   ├── J.png 69 | │   │   ├── J.txt 70 | │   │   ├── K.png 71 | │   │   ├── K.txt 72 | │   │   ├── L.png 73 | │   │   ├── L.txt 74 | │   │   ├── M.png 75 | │   │   ├── M.txt 76 | │   │   ├── N.png 77 | │   │   ├── N.txt 78 | │   │   ├── O.png 79 | │   │   ├── O.txt 80 | │   │   ├── P.png 81 | │   │   ├── P.txt 82 | │   │   ├── R.png 83 | │   │   ├── R.txt 84 | │   │   ├── S.png 85 | │   │   ├── S.txt 86 | │   │   ├── T.png 87 | │   │   ├── T.txt 88 | │   │   ├── U.png 89 | │   │   ├── U.txt 90 | │   │   ├── V.png 91 | │   │   ├── V.txt 92 | │   │   ├── W.png 93 | │   │   ├── W.txt 94 | │   │   ├── X.png 95 | │   │   ├── X.txt 96 | │   │   ├── Y.png 97 | │   │   ├── Y.txt 98 | │   │   ├── Z.png 99 | │   │   └── Z.txt 100 | │   ├── camera.py 101 | │   ├── image_success 102 | │   ├── images_unprocessed 103 | │   ├── main.py 104 | │   ├── main.py~ 105 | │   ├── n191.net 106 | │   ├── n251.net 107 | │   ├── nanpr.py 108 | │   ├── README.md 109 | │   ├── test_data 110 | │   │   ├── 1.jpg 111 | │   │   ├── 2.jpg 112 | │   │   ├── 3.jpg 113 | │   │   ├── 4.jpg 114 | │   │   ├── 5.jpg 115 | │   │   └── 6.jpg 116 | │   ├── tophat.py 117 | │   └── tophat.py~ 118 | ├── db 119 | │   └── ANPR.db 120 | ├── examples 121 | ├── README.md 122 | └── server 123 | ├── resources 124 | │   ├── html 125 | │   │   ├── login.html 126 | │   │   ├── main.js 127 | │   │   ├── mainpage.html 128 | │   │   └── mainpage.html~ 129 | │   └── js 130 | │   └── main.js~ 131 | ├── server.py 132 | └── server.py~ 133 | 134 | 135 | Depedancies 136 | ==================== 137 | sudo apt-get install python-pyfann 138 | sudo apt-get install python-opencv 139 | sudo apt-get install skimage 140 | sudo apt-get install postgresql-9.4 141 | python nanpr.py -i 2423453DR33THGP.jpg 142 | 143 | 144 | 145 | -------------------------------------------------------------------------------- /camera_client/README.md: -------------------------------------------------------------------------------- 1 | # anpr 2 | 3 | python nanpr.py -i 2423453DR33THGP.jpg 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /camera_client/averages/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/0.png -------------------------------------------------------------------------------- /camera_client/averages/0.txt: -------------------------------------------------------------------------------- 1 | 254 255 254 254 253 249 244 242 242 244 245 244 244 246 248 249 247 246 245 245 243 239 234 233 232 240 248 253 254 254 2 | 254 254 254 252 237 210 187 175 170 173 175 174 171 175 176 179 177 172 165 160 152 145 136 138 147 177 214 244 253 254 3 | 255 254 252 236 183 128 100 85 75 71 66 60 55 56 55 54 48 48 45 43 43 45 44 45 55 81 129 200 245 254 4 | 254 254 244 184 104 59 36 29 23 20 17 16 12 11 10 9 7 6 6 7 7 8 9 11 16 25 53 118 217 249 5 | 254 253 217 114 50 22 11 6 4 2 2 2 2 1 1 1 0 0 1 1 1 1 2 3 5 9 17 53 150 237 6 | 254 246 161 59 17 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 7 21 82 212 7 | 254 231 97 24 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 2 6 38 160 8 | 252 196 56 9 1 2 5 6 6 5 5 5 6 5 5 5 4 4 5 5 5 6 8 9 5 1 1 2 15 103 9 | 250 149 28 3 4 15 30 35 38 38 38 38 36 35 32 32 31 33 37 42 47 53 56 53 33 7 0 1 6 62 10 | 245 106 13 2 10 43 80 105 115 118 119 121 125 125 127 128 130 134 138 139 144 148 149 132 87 28 2 1 3 35 11 | 237 73 6 2 21 86 143 176 190 200 204 206 210 212 214 216 217 218 218 219 218 220 218 201 148 64 6 1 2 20 12 | 227 49 3 4 34 123 192 221 235 241 242 244 247 247 246 248 248 248 247 247 247 247 245 234 195 102 12 1 1 13 13 | 216 32 2 4 47 155 219 242 249 252 252 253 253 253 253 253 253 253 253 253 253 253 251 246 219 129 21 1 1 9 14 | 205 23 1 5 56 182 235 249 253 254 254 254 254 254 253 254 254 254 254 254 254 254 254 250 233 152 28 1 1 7 15 | 200 17 1 5 63 193 242 252 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 252 239 165 33 3 0 6 16 | 194 14 2 6 67 198 245 252 254 254 255 255 254 254 254 254 254 254 254 254 255 254 254 252 241 169 35 2 0 5 17 | 197 12 2 6 68 196 245 252 254 254 255 255 254 254 254 254 254 255 254 255 254 254 254 252 240 169 34 2 0 4 18 | 197 14 1 6 62 191 243 252 254 254 255 255 255 254 254 254 255 255 255 254 254 254 253 250 235 161 30 3 0 5 19 | 199 16 1 4 51 179 240 251 254 255 254 254 255 254 254 254 254 254 254 254 254 254 252 248 226 142 22 2 0 6 20 | 202 19 1 3 37 161 234 250 254 254 254 254 254 253 253 253 253 253 252 251 251 251 247 236 207 118 15 1 1 10 21 | 210 26 2 1 22 136 225 247 252 252 251 248 247 245 244 243 243 242 242 240 240 239 232 217 174 83 9 1 1 18 22 | 222 36 3 1 15 109 210 241 245 241 232 220 212 205 204 201 197 196 193 190 188 187 181 162 118 47 4 0 2 34 23 | 233 58 7 1 10 81 192 231 231 208 165 128 106 97 96 93 90 90 92 90 90 91 93 87 58 21 1 0 6 62 24 | 241 89 14 3 7 59 172 211 192 132 68 34 20 18 17 17 16 16 17 18 20 21 24 24 17 4 0 1 15 106 25 | 248 141 29 9 9 52 152 175 125 60 20 4 2 1 2 1 1 1 1 1 2 2 1 2 1 1 1 5 36 158 26 | 251 192 62 23 20 64 140 136 74 30 6 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 19 80 206 27 | 252 228 128 63 56 100 145 111 56 21 4 1 0 0 0 0 0 0 0 0 1 1 1 3 4 8 20 53 143 238 28 | 253 245 201 141 133 167 172 114 59 24 7 3 3 2 2 2 2 3 3 4 5 7 8 10 16 27 55 113 205 249 29 | 254 251 240 218 213 223 208 148 84 42 20 14 12 14 14 14 15 15 18 20 24 29 32 37 49 75 119 194 243 253 30 | 254 253 250 247 246 247 238 200 139 96 68 61 63 70 80 81 85 85 92 93 99 101 103 109 124 154 199 238 252 254 31 | -------------------------------------------------------------------------------- /camera_client/averages/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/1.png -------------------------------------------------------------------------------- /camera_client/averages/1.txt: -------------------------------------------------------------------------------- 1 | 252 253 254 254 254 252 241 212 200 232 251 254 254 254 255 255 255 255 254 254 254 254 254 254 253 251 223 155 141 219 2 | 252 253 253 254 253 246 215 164 155 194 242 252 254 254 255 255 254 254 254 254 254 254 254 254 252 240 163 77 70 158 3 | 253 253 253 253 250 230 162 106 103 142 221 249 254 254 255 255 254 254 254 254 254 254 254 253 250 215 90 30 26 85 4 | 253 253 253 252 245 198 107 61 59 102 195 246 253 254 255 254 254 254 254 254 254 254 254 253 246 183 49 14 12 41 5 | 253 253 252 249 230 149 61 28 31 71 176 243 253 254 254 254 254 254 254 254 254 254 253 252 242 151 32 8 7 24 6 | 253 252 251 243 202 103 28 13 16 54 167 242 252 254 255 254 254 254 254 254 254 254 254 251 237 132 25 6 5 13 7 | 252 252 248 229 157 57 12 4 10 45 169 242 252 254 254 254 254 254 254 254 254 254 253 251 235 122 23 5 3 10 8 | 252 251 240 196 108 29 5 2 9 49 178 241 252 254 254 254 254 254 254 254 254 254 253 250 231 119 21 4 3 8 9 | 251 246 219 153 65 13 2 2 12 68 191 242 252 254 254 254 254 254 254 254 254 254 253 250 227 114 19 3 3 8 10 | 251 236 186 103 33 6 0 2 21 93 201 244 252 254 254 254 254 254 254 254 254 254 253 249 223 111 18 3 3 8 11 | 248 214 139 63 16 2 0 5 33 112 206 244 251 253 254 254 254 254 254 254 254 254 253 247 215 102 16 3 2 8 12 | 239 181 95 33 7 1 0 8 42 124 202 237 248 251 251 252 253 253 253 253 253 253 250 240 201 89 14 2 2 7 13 | 229 142 55 15 3 0 0 9 43 120 186 220 234 239 241 241 241 241 243 243 244 244 241 226 172 70 10 2 2 7 14 | 208 98 30 7 1 0 1 8 36 97 151 182 194 195 195 196 195 198 200 201 203 205 202 182 127 44 6 1 1 7 15 | 180 63 14 3 0 0 0 4 23 62 99 118 123 122 117 113 110 107 105 102 101 104 108 97 64 20 2 0 1 6 16 | 151 37 6 1 0 0 0 1 10 28 48 58 58 56 49 44 39 33 30 29 27 28 29 27 19 6 1 0 1 6 17 | 126 20 3 1 0 0 0 1 4 11 18 22 20 17 13 11 9 8 7 5 4 4 5 5 4 1 0 0 1 5 18 | 116 12 2 0 0 0 0 0 1 3 5 5 5 4 3 1 1 1 1 0 0 0 1 1 1 0 0 0 1 5 19 | 120 13 2 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 20 | 136 23 4 2 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 21 | 162 49 16 9 7 5 6 6 4 3 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 5 22 | 193 87 45 32 28 27 27 28 25 21 17 15 13 11 10 8 6 6 5 4 5 6 6 5 1 0 0 0 1 5 23 | 214 128 85 72 70 70 70 68 66 66 62 59 56 54 53 51 49 48 46 45 48 51 54 43 19 2 0 0 1 5 24 | 231 170 128 116 117 121 121 121 125 126 124 125 124 123 124 127 129 130 133 138 143 151 156 132 71 14 1 0 1 5 25 | 241 202 171 163 165 169 172 174 179 181 182 182 185 188 190 192 196 202 205 210 214 219 219 200 136 33 3 1 1 5 26 | 247 225 204 198 200 203 208 211 214 216 219 221 223 226 228 230 232 235 237 241 242 244 243 232 183 64 5 1 1 5 27 | 250 239 225 223 224 227 230 233 235 237 239 241 242 243 244 245 247 248 249 250 251 251 250 244 214 96 11 1 1 7 28 | 251 245 240 239 240 241 243 245 246 247 248 249 249 249 250 251 252 252 252 252 252 253 251 248 232 135 22 3 2 13 29 | 251 249 246 247 247 247 248 250 251 251 252 252 253 253 253 253 253 253 253 253 253 253 253 251 242 182 46 7 4 28 30 | 252 251 250 250 250 251 251 253 253 253 253 254 253 254 253 253 254 254 254 254 254 254 253 252 249 220 101 20 12 66 31 | -------------------------------------------------------------------------------- /camera_client/averages/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/2.png -------------------------------------------------------------------------------- /camera_client/averages/2.txt: -------------------------------------------------------------------------------- 1 | 254 254 254 252 246 236 228 239 252 254 254 254 255 255 254 254 254 254 254 255 255 255 254 252 244 223 195 180 196 239 2 | 253 254 252 242 217 190 175 190 236 252 254 254 254 255 254 254 254 254 255 255 255 254 253 240 190 125 86 72 104 196 3 | 253 253 244 208 163 129 113 129 191 247 253 254 255 255 255 254 254 254 254 254 254 253 243 188 88 38 23 24 41 117 4 | 253 251 221 154 102 70 57 74 137 233 253 254 254 255 255 255 254 255 255 254 254 249 212 95 28 10 6 9 16 61 5 | 253 247 180 99 54 30 23 36 93 213 251 254 254 255 255 255 255 255 254 254 253 232 138 33 7 2 2 3 6 32 6 | 252 231 128 53 22 9 8 18 62 195 250 254 254 255 255 255 255 254 254 253 244 186 57 8 1 0 0 1 3 17 7 | 251 204 80 24 6 2 2 11 48 184 248 254 254 255 255 255 254 254 254 250 220 105 20 2 0 0 0 0 1 11 8 | 247 164 42 9 1 0 2 10 50 186 248 254 254 255 255 255 254 254 252 237 152 38 5 0 0 0 0 0 1 6 9 | 241 120 19 3 1 2 7 18 72 199 249 254 254 255 255 255 254 254 244 193 67 11 1 0 0 0 0 0 0 5 10 | 232 79 9 1 2 8 21 44 114 218 250 254 254 255 255 254 254 250 218 108 20 1 0 0 1 1 0 0 0 4 11 | 219 48 3 1 6 28 61 97 166 235 252 254 254 254 254 254 251 234 151 38 5 0 0 1 9 10 2 0 0 4 12 | 201 30 2 1 12 58 109 157 211 245 253 254 254 254 254 253 242 188 67 9 0 0 0 14 45 29 5 0 0 4 13 | 181 18 1 2 20 92 158 203 235 251 254 254 254 254 253 246 211 98 18 1 0 0 7 63 93 62 11 0 0 5 14 | 164 10 1 3 29 123 194 229 247 253 254 254 254 253 249 224 135 31 3 0 0 1 39 130 142 92 18 1 0 6 15 | 153 8 0 4 35 142 216 242 250 253 253 254 254 250 233 168 52 6 0 0 0 13 114 183 182 118 23 1 0 5 16 | 145 6 0 4 37 152 224 245 251 253 253 253 251 239 188 82 12 0 0 0 2 55 181 216 209 139 29 2 1 5 17 | 146 7 0 4 35 150 224 245 250 252 252 250 241 202 107 24 2 0 0 1 18 133 221 238 223 155 32 3 1 6 18 | 154 9 0 2 29 137 218 243 249 250 249 241 210 127 37 4 0 0 0 6 71 197 239 246 230 164 33 4 1 6 19 | 169 12 0 1 19 113 199 234 243 244 235 211 143 49 7 0 0 0 1 31 153 229 249 250 236 169 32 4 1 6 20 | 186 20 1 1 11 78 159 207 222 218 198 144 57 11 1 0 0 0 13 95 210 245 253 251 238 169 31 4 1 7 21 | 205 34 2 0 6 44 109 154 173 160 121 54 13 1 0 0 0 4 48 176 236 251 254 252 240 165 30 4 1 7 22 | 221 58 4 0 2 17 55 90 98 82 40 12 2 0 0 0 1 22 125 222 249 253 254 252 240 162 28 4 1 8 23 | 235 88 10 1 0 4 15 29 33 21 6 1 0 0 0 0 9 75 196 243 252 254 254 252 241 158 27 4 1 7 24 | 244 130 20 2 0 1 2 5 5 3 1 0 0 0 0 5 42 157 233 251 254 254 254 252 241 155 27 4 1 9 25 | 249 175 42 7 2 0 0 0 0 0 0 0 0 0 4 26 115 219 249 253 254 254 254 253 242 157 28 5 2 13 26 | 251 213 81 21 5 2 1 1 0 0 0 0 1 4 19 90 197 244 253 254 254 254 254 253 244 166 33 8 4 19 27 | 253 238 137 47 15 7 3 2 2 1 2 3 8 22 81 182 239 252 254 254 254 254 254 253 248 185 44 13 9 28 28 | 254 248 193 94 40 20 12 8 8 7 9 16 34 88 179 237 250 254 254 254 254 254 254 254 250 208 69 24 18 48 29 | 254 252 232 162 90 53 37 30 27 30 39 62 115 193 237 250 253 254 254 254 254 255 254 254 252 233 114 50 44 86 30 | 254 253 250 224 162 113 83 72 73 81 106 155 210 242 252 254 254 254 254 254 254 254 255 254 254 246 184 95 85 148 31 | -------------------------------------------------------------------------------- /camera_client/averages/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/3.png -------------------------------------------------------------------------------- /camera_client/averages/3.txt: -------------------------------------------------------------------------------- 1 | 253 251 246 248 252 253 254 254 254 254 254 255 255 255 255 255 254 254 254 254 254 251 237 183 150 169 206 233 248 252 2 | 252 245 230 235 247 252 253 254 254 254 255 255 255 255 255 255 255 254 254 254 253 245 170 67 39 58 117 195 237 251 3 | 250 228 201 207 234 249 253 254 254 255 255 255 255 255 255 255 255 254 254 254 251 223 89 23 10 14 34 106 206 244 4 | 246 199 158 168 213 243 253 254 255 254 255 255 255 255 255 255 255 255 254 254 250 197 54 11 4 5 10 33 133 229 5 | 240 159 109 120 184 236 251 253 254 255 255 255 255 255 255 255 255 254 255 254 248 177 44 8 3 3 3 12 59 198 6 | 228 117 66 76 150 225 249 253 254 254 254 255 255 255 254 255 255 255 255 254 249 177 45 7 2 2 2 5 23 147 7 | 212 74 31 38 114 216 247 253 254 254 254 254 254 254 254 254 254 255 255 254 249 191 59 10 2 1 1 3 10 84 8 | 193 44 11 16 82 206 244 252 254 254 254 254 254 254 254 254 254 254 255 254 250 214 93 22 4 1 1 2 5 46 9 | 175 26 4 6 60 197 243 252 254 254 254 254 254 252 248 249 252 254 254 254 252 234 153 61 19 4 0 1 3 23 10 | 163 17 2 4 50 189 242 251 253 254 254 253 249 233 214 225 245 253 254 254 253 247 212 139 67 20 2 1 1 12 11 | 157 12 1 2 45 185 241 251 253 254 253 249 229 169 115 148 219 249 254 254 254 251 240 208 141 57 10 1 1 8 12 | 159 11 1 2 44 184 241 250 253 253 250 235 172 65 28 66 175 240 253 254 254 253 249 235 196 105 21 2 0 5 13 | 162 11 1 3 46 186 240 250 252 252 243 198 86 13 6 26 131 228 250 254 254 254 252 245 222 143 33 3 1 3 14 | 170 10 1 3 49 186 239 250 251 247 219 130 23 2 1 12 93 215 249 254 254 254 253 249 234 168 45 5 1 3 15 | 177 12 1 3 51 183 237 248 248 234 171 54 4 0 0 6 69 204 246 253 254 254 253 250 239 181 51 7 1 3 16 | 182 15 1 3 52 177 233 244 240 203 98 13 1 0 0 4 56 192 243 252 253 254 253 250 239 185 51 6 1 3 17 | 188 15 1 2 49 170 223 232 218 142 34 2 0 0 0 3 47 179 238 251 253 253 253 249 236 179 47 6 1 4 18 | 192 16 1 2 44 154 206 211 169 68 6 0 0 0 0 2 37 157 228 248 251 252 251 246 228 163 39 4 2 5 19 | 193 17 1 1 35 133 175 165 98 16 1 0 0 0 0 0 24 131 209 238 245 247 245 236 209 134 27 3 2 7 20 | 194 18 2 0 27 103 130 105 34 3 0 0 0 0 0 0 11 92 178 216 230 231 229 214 175 96 16 2 2 13 21 | 196 18 2 0 13 63 76 42 4 0 0 2 7 5 1 0 3 44 127 172 191 196 189 173 129 55 6 2 3 23 22 | 195 18 3 0 5 26 28 6 0 0 2 13 42 33 5 0 0 13 62 105 125 129 124 107 70 22 2 1 5 43 23 | 196 18 3 0 1 4 3 0 0 1 9 52 118 104 22 2 0 1 15 36 50 54 54 45 23 5 1 2 9 73 24 | 196 21 3 1 0 0 0 0 0 4 34 129 189 173 60 9 0 0 1 6 10 12 12 10 3 1 1 4 20 116 25 | 199 28 4 1 0 0 0 0 2 17 91 199 228 218 119 20 3 0 0 0 0 1 2 1 1 1 3 10 42 165 26 | 210 38 6 2 0 0 0 2 8 53 168 233 247 238 172 42 6 2 1 0 1 1 1 1 2 3 8 24 79 206 27 | 221 56 13 3 2 2 2 6 29 118 222 247 252 248 214 82 18 5 3 3 3 3 4 4 6 11 22 50 136 231 28 | 233 90 25 10 7 6 8 21 78 192 243 252 254 252 238 148 47 17 10 10 10 12 13 16 21 31 50 98 197 245 29 | 244 143 52 28 22 22 29 68 161 236 251 254 254 254 249 213 112 52 35 34 35 36 41 48 55 70 100 164 234 251 30 | 250 205 108 69 60 66 91 154 225 249 253 254 254 254 254 244 205 138 103 94 96 97 101 105 109 128 169 224 249 253 31 | -------------------------------------------------------------------------------- /camera_client/averages/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/4.png -------------------------------------------------------------------------------- /camera_client/averages/4.txt: -------------------------------------------------------------------------------- 1 | 253 254 254 254 254 254 254 254 254 254 254 254 254 254 254 253 247 230 201 181 173 163 148 173 230 252 254 254 254 254 2 | 253 254 254 254 254 254 254 254 254 254 254 254 254 254 252 246 222 168 104 69 59 49 49 73 175 243 253 254 254 254 3 | 253 253 254 254 254 254 254 254 254 254 254 254 253 249 242 216 147 65 25 12 10 10 11 22 92 220 251 254 254 254 4 | 253 254 254 254 254 253 254 254 254 253 253 252 247 238 213 147 58 16 3 1 1 2 3 7 37 189 247 254 254 254 5 | 253 254 253 253 253 253 253 253 253 252 250 244 235 208 151 61 14 3 0 0 0 0 1 3 18 156 242 254 254 254 6 | 252 253 253 253 253 253 252 251 250 247 241 231 210 155 73 17 3 0 0 0 0 0 0 2 10 130 237 253 254 254 7 | 252 253 253 253 252 251 249 247 243 238 228 209 161 79 20 4 1 0 0 0 0 0 0 1 7 112 234 253 254 254 8 | 253 252 252 251 249 247 243 240 233 225 206 163 88 25 4 0 0 0 1 3 1 0 0 1 5 104 230 252 254 254 9 | 253 252 249 247 244 240 236 230 222 205 163 93 31 5 0 0 0 3 12 16 8 0 0 1 5 103 228 252 254 254 10 | 252 249 246 242 237 234 228 220 204 161 96 32 7 1 0 0 3 19 44 49 25 3 0 1 4 104 227 252 254 254 11 | 252 246 240 235 229 226 219 202 164 101 35 8 1 0 0 3 21 62 102 98 48 9 0 1 5 105 226 251 254 254 12 | 250 241 233 229 224 218 199 162 104 43 9 2 1 0 4 20 62 121 157 143 75 16 1 0 5 108 225 251 253 254 13 | 249 236 227 224 216 200 164 111 47 11 2 1 2 5 16 54 111 169 189 173 99 22 1 0 4 106 223 250 253 254 14 | 245 229 224 215 199 165 113 53 15 2 2 4 7 17 46 96 154 195 206 189 112 26 2 1 4 97 215 246 252 253 15 | 242 226 213 197 166 115 58 19 3 3 5 11 20 44 85 135 182 209 213 192 115 25 2 0 2 82 201 240 248 252 16 | 239 219 196 163 116 63 21 6 4 8 15 24 46 84 124 163 194 210 213 188 110 25 1 0 2 60 177 226 239 246 17 | 236 204 165 117 68 25 9 7 10 17 29 51 89 133 158 177 190 202 202 173 92 19 1 0 1 32 135 192 217 234 18 | 231 179 125 71 31 12 10 13 20 30 54 94 144 177 182 171 164 172 170 137 67 14 1 0 0 12 78 130 160 201 19 | 225 148 80 35 15 13 17 21 31 52 92 149 195 209 189 140 114 109 106 82 37 6 0 0 0 2 26 54 77 129 20 | 210 109 44 19 14 19 24 32 49 90 148 200 228 227 184 100 53 42 40 33 13 1 0 0 0 0 5 15 24 56 21 | 191 73 26 18 20 25 32 50 84 141 195 234 243 235 173 67 20 9 7 6 2 0 0 0 0 0 1 3 6 16 22 | 163 47 23 22 24 33 52 82 136 191 231 249 250 238 163 51 12 3 1 1 0 0 0 0 0 0 0 0 1 5 23 | 143 37 26 26 32 49 83 131 186 226 248 253 253 241 165 47 10 2 1 0 0 0 0 0 0 0 0 0 1 3 24 | 138 38 29 32 47 79 126 180 222 246 253 254 253 244 178 54 13 3 1 0 0 0 0 0 0 0 0 0 1 4 25 | 149 52 37 45 74 121 177 218 242 252 254 254 254 248 198 73 21 7 3 1 0 0 0 0 0 0 2 2 4 11 26 | 175 75 58 73 113 167 214 241 251 254 254 254 254 251 224 116 42 19 11 5 1 0 0 0 0 1 5 9 13 32 27 | 205 114 91 114 158 209 237 250 254 254 254 254 254 253 241 188 114 80 63 32 8 1 0 1 1 6 27 49 63 108 28 | 224 162 137 157 203 232 247 253 254 254 254 254 254 254 250 234 201 176 160 109 34 7 2 2 4 28 97 140 159 197 29 | 239 198 182 202 228 246 253 254 254 254 255 254 254 254 254 251 245 237 226 196 109 23 5 4 14 91 176 212 223 237 30 | 247 225 215 229 243 252 254 254 254 255 254 254 254 254 254 254 252 251 247 234 187 77 20 14 51 162 222 239 246 248 31 | -------------------------------------------------------------------------------- /camera_client/averages/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/5.png -------------------------------------------------------------------------------- /camera_client/averages/5.txt: -------------------------------------------------------------------------------- 1 | 253 253 246 237 238 240 244 244 244 247 248 250 248 246 248 253 254 255 255 255 255 254 254 253 241 222 231 247 253 253 2 | 253 239 194 167 163 169 168 169 175 178 184 185 173 164 187 238 253 254 255 255 254 254 254 239 160 123 153 216 247 253 3 | 251 200 124 92 81 75 72 70 67 67 68 68 59 53 77 171 247 254 254 254 254 254 252 185 80 51 75 141 229 250 4 | 247 147 62 34 29 24 21 19 17 15 15 13 10 10 23 92 227 253 254 255 254 254 247 133 41 20 26 66 170 246 5 | 240 94 24 11 8 6 5 6 5 3 2 2 1 1 5 53 201 251 254 254 254 254 242 101 25 8 9 25 100 229 6 | 231 59 9 3 2 1 1 1 1 1 0 0 0 0 1 33 181 250 254 255 254 254 240 98 22 5 4 9 46 183 7 | 220 36 4 1 1 1 1 2 1 1 1 0 0 0 0 26 172 249 254 255 254 254 243 115 24 5 2 3 17 120 8 | 214 25 2 1 1 4 6 7 8 9 7 2 0 0 0 28 173 249 254 255 254 254 247 160 40 9 2 2 7 68 9 | 211 20 1 1 5 19 32 40 46 48 40 16 1 0 0 35 189 249 254 255 254 254 250 205 87 18 2 1 2 36 10 | 210 19 1 1 16 57 91 115 131 130 103 49 4 0 2 51 203 251 254 255 255 254 252 233 149 48 7 1 1 20 11 | 213 19 0 2 31 107 161 188 202 201 173 95 9 0 5 83 217 251 254 255 255 254 253 247 204 94 17 1 0 10 12 | 216 21 0 2 47 152 210 231 238 240 217 128 14 0 11 121 230 252 254 255 255 255 254 251 231 141 31 3 0 5 13 | 219 21 0 3 57 179 234 247 251 250 236 148 14 0 23 152 238 253 254 255 255 255 254 253 245 181 47 4 0 3 14 | 222 21 0 4 63 199 244 252 253 253 240 148 12 1 31 175 243 253 254 255 255 255 254 254 250 204 58 5 0 2 15 | 223 20 0 4 65 210 247 252 253 254 242 134 9 1 39 184 245 253 254 255 255 255 254 254 251 214 70 6 0 2 16 | 224 20 0 4 66 214 248 252 254 254 240 115 7 1 37 184 246 253 254 255 255 254 254 254 251 218 73 6 0 1 17 | 222 19 0 4 65 216 249 252 254 254 236 93 5 0 31 178 243 253 254 254 254 254 254 254 249 214 66 5 0 2 18 | 222 17 0 4 63 216 249 253 254 254 233 77 3 0 24 161 238 252 254 254 254 254 253 252 246 199 57 5 0 3 19 | 223 18 1 3 59 215 248 252 254 254 230 68 3 0 17 131 227 248 252 253 252 252 251 248 236 172 41 3 0 4 20 | 225 17 0 3 55 212 248 253 254 254 229 65 3 0 7 86 200 236 246 247 247 246 244 238 212 126 23 2 1 9 21 | 220 16 1 3 53 209 248 253 254 254 231 68 4 0 3 38 135 197 221 228 225 224 220 205 165 75 12 1 1 23 22 | 218 14 1 3 50 206 248 253 253 254 237 78 6 0 0 10 48 115 153 168 171 170 162 142 91 31 4 0 2 40 23 | 214 13 1 2 47 204 248 253 254 254 241 99 11 0 0 1 10 33 59 72 75 76 74 61 33 9 1 1 6 73 24 | 211 12 1 2 44 202 249 253 254 254 245 134 18 1 0 0 1 6 14 16 19 19 18 14 8 2 0 2 15 127 25 | 215 13 1 3 46 204 249 253 254 254 250 177 34 3 0 0 0 0 1 3 2 3 3 2 2 1 2 5 36 180 26 | 221 20 3 4 51 211 249 253 254 254 253 217 63 9 1 0 0 0 0 1 1 1 1 2 2 3 5 14 79 222 27 | 231 34 6 8 63 220 249 253 254 255 254 240 123 23 4 1 1 1 1 1 2 2 3 4 5 6 14 40 143 242 28 | 241 66 14 17 93 232 250 253 254 255 254 251 197 64 17 5 3 4 5 5 6 8 10 11 15 20 38 93 207 250 29 | 249 125 40 43 143 242 252 253 254 255 254 254 242 155 62 28 18 16 20 22 27 32 35 37 43 58 94 170 241 253 30 | 253 197 97 99 204 248 253 254 254 255 255 254 253 232 167 115 87 80 84 87 90 91 91 93 105 127 172 234 252 253 31 | -------------------------------------------------------------------------------- /camera_client/averages/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/6.png -------------------------------------------------------------------------------- /camera_client/averages/6.txt: -------------------------------------------------------------------------------- 1 | 254 255 255 255 255 255 255 255 255 255 255 255 254 254 253 251 246 238 224 204 191 191 193 211 233 247 252 254 254 255 2 | 254 255 255 255 255 255 255 255 255 255 254 254 254 251 243 226 194 151 109 76 57 47 61 92 148 205 239 252 254 255 3 | 254 255 255 255 255 254 254 254 254 254 253 252 243 226 188 135 80 40 21 10 8 8 10 19 43 95 179 239 253 254 4 | 254 255 255 255 255 254 254 254 253 252 248 235 200 143 81 36 14 5 1 0 0 1 1 2 5 18 69 168 241 254 5 | 254 255 254 254 254 254 253 252 249 240 221 175 109 46 18 5 0 0 0 0 0 0 0 0 1 2 12 69 199 250 6 | 254 254 254 254 254 253 251 244 230 202 149 84 34 10 1 0 0 0 0 0 0 0 0 0 0 0 2 17 115 239 7 | 254 254 254 254 253 250 240 218 178 117 61 23 6 0 0 0 0 0 0 0 1 1 0 0 0 0 0 4 41 197 8 | 254 254 253 252 247 237 207 160 94 42 13 3 0 0 0 0 0 2 3 5 6 7 6 2 0 0 0 1 10 133 9 | 254 253 251 245 230 199 139 79 31 8 2 0 0 0 0 0 4 14 26 37 43 42 34 18 4 0 0 0 2 65 10 | 253 251 244 224 187 129 68 25 7 1 0 0 0 0 0 3 18 57 98 123 133 138 121 78 26 3 0 0 1 27 11 | 253 246 220 178 121 62 21 5 0 0 0 0 0 0 0 10 59 139 186 209 217 217 208 174 92 20 1 0 0 9 12 | 252 232 174 111 55 18 4 0 0 0 0 0 0 0 2 29 120 203 234 244 247 247 244 228 167 51 4 0 0 4 13 | 247 191 111 50 18 4 1 0 1 2 3 1 0 0 5 56 170 235 249 252 253 253 252 247 212 94 11 0 0 1 14 | 240 138 53 17 4 1 0 2 8 16 17 4 0 1 12 86 205 247 253 254 254 254 254 252 233 134 21 0 0 0 15 | 225 83 18 4 0 1 2 13 33 58 49 12 1 1 15 107 222 251 254 254 255 254 254 254 241 158 27 1 0 0 16 | 205 39 5 0 1 4 13 40 87 122 110 35 1 1 17 115 227 252 254 255 254 254 254 254 244 168 31 0 0 0 17 | 181 16 2 1 4 15 43 96 154 184 158 59 2 1 15 112 226 251 254 254 254 254 254 254 245 167 32 1 0 1 18 | 170 14 2 4 18 48 101 162 209 225 201 88 3 1 10 96 220 249 254 254 254 254 254 254 241 152 28 1 0 2 19 | 180 25 10 19 48 105 163 213 237 244 227 110 5 0 7 71 208 246 253 254 254 254 254 252 232 128 18 0 0 4 20 | 208 57 35 52 102 163 212 238 249 250 241 131 9 0 4 43 177 237 250 252 252 252 253 247 210 92 10 0 0 7 21 | 230 116 81 106 160 213 238 249 253 254 246 153 14 0 1 19 121 211 239 247 247 247 244 229 158 50 4 0 0 17 22 | 243 172 144 166 208 238 247 252 254 254 250 175 22 0 0 7 48 138 196 215 221 219 205 165 89 18 1 0 1 39 23 | 250 215 196 211 235 246 251 254 254 254 252 201 35 0 0 0 13 48 99 127 137 131 114 77 28 5 0 0 4 84 24 | 252 239 229 236 246 251 254 254 254 254 254 222 60 3 0 0 1 9 26 38 45 43 35 19 7 1 0 0 18 149 25 | 253 248 244 247 250 253 254 255 255 255 254 237 103 10 0 0 0 0 3 6 6 4 5 2 0 0 0 5 58 211 26 | 254 252 250 251 253 254 254 255 255 255 254 248 167 27 2 0 0 0 0 0 0 0 0 0 0 0 3 27 137 238 27 | 254 254 252 253 254 254 255 255 255 255 254 252 217 79 11 1 0 0 0 0 0 0 0 0 1 5 20 95 209 249 28 | 254 254 254 254 254 255 255 255 255 255 254 254 245 163 45 7 2 0 0 0 0 0 1 2 7 26 84 185 243 252 29 | 254 254 254 255 255 255 255 255 255 255 255 254 253 232 141 50 14 5 3 1 1 3 6 16 43 99 184 238 251 254 30 | 254 254 255 255 255 255 255 255 255 255 255 255 254 249 227 156 86 44 21 16 14 21 38 80 139 204 239 251 254 254 31 | -------------------------------------------------------------------------------- /camera_client/averages/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/7.png -------------------------------------------------------------------------------- /camera_client/averages/7.txt: -------------------------------------------------------------------------------- 1 | 251 241 201 166 148 122 103 140 225 253 254 255 255 255 255 255 255 255 255 255 255 255 254 254 254 254 254 252 252 253 2 | 248 205 108 57 40 28 21 48 150 241 254 255 255 255 255 255 255 255 255 255 255 255 255 254 254 253 252 250 249 251 3 | 240 125 26 10 4 3 3 12 76 209 252 254 255 255 255 255 255 255 255 255 254 254 254 253 251 248 245 242 240 244 4 | 220 55 7 2 1 1 1 5 41 175 250 254 254 255 255 255 255 255 254 254 254 254 251 246 239 233 225 219 217 228 5 | 184 22 2 0 0 1 1 3 29 151 247 254 254 255 255 255 255 255 254 254 253 250 241 225 209 195 188 180 178 200 6 | 152 11 1 0 0 1 1 3 26 144 246 254 254 255 255 255 255 255 254 253 248 233 206 181 159 146 134 126 128 156 7 | 131 6 0 0 0 0 1 4 34 155 245 254 254 255 255 255 254 254 253 248 230 194 152 119 99 90 82 74 77 104 8 | 123 4 0 0 0 0 2 9 56 180 246 254 254 255 254 255 254 253 247 227 184 129 85 59 47 42 38 34 36 60 9 | 125 4 0 0 0 5 10 30 102 208 250 254 255 255 254 254 253 247 228 175 113 65 36 22 16 14 12 12 15 31 10 | 131 4 0 0 1 21 51 96 172 232 252 254 255 255 254 253 245 226 167 104 53 24 13 7 5 4 4 4 5 13 11 | 139 4 1 0 6 58 126 181 223 248 254 254 254 254 253 244 218 163 91 43 18 8 4 3 2 1 1 1 2 6 12 | 145 5 1 0 12 96 181 230 245 252 254 254 254 253 245 214 156 86 37 15 5 2 1 1 1 2 2 1 2 10 13 | 152 5 0 0 18 121 216 245 251 254 254 254 253 246 212 151 74 29 11 4 2 0 0 2 5 8 9 9 11 24 14 | 156 5 0 0 22 139 228 249 252 254 254 254 246 211 140 64 24 7 2 1 0 1 4 14 23 29 30 30 34 51 15 | 159 6 0 1 24 147 233 250 253 254 253 245 208 129 56 21 7 2 1 0 1 5 21 41 60 70 70 66 69 95 16 | 161 6 0 0 24 151 233 249 253 252 244 205 126 47 14 4 1 0 0 0 5 22 56 89 110 121 117 112 115 140 17 | 162 6 0 0 22 144 227 247 250 243 204 119 41 12 3 1 0 0 0 3 22 64 113 150 171 174 172 168 165 187 18 | 163 6 0 0 18 129 215 239 235 200 108 34 9 2 0 0 0 0 3 23 67 125 177 204 215 217 216 210 208 220 19 | 166 5 0 0 11 106 188 214 188 99 28 5 0 0 0 0 0 4 23 68 128 186 221 236 242 242 241 238 237 241 20 | 164 5 0 0 6 72 132 144 86 25 5 0 0 0 0 0 4 24 75 136 190 228 244 249 249 249 249 248 247 249 21 | 162 5 0 0 1 31 61 53 16 3 0 0 0 0 0 2 24 74 142 202 233 245 251 252 253 253 253 252 252 252 22 | 158 4 0 0 0 5 12 7 2 0 0 0 0 0 4 26 77 147 212 239 247 251 253 254 254 254 254 253 253 253 23 | 154 4 0 0 0 0 0 0 0 0 0 0 0 4 28 82 158 216 243 249 252 253 254 254 254 254 254 254 254 254 24 | 146 4 0 0 0 0 0 0 0 0 0 0 1 27 88 166 220 245 249 253 253 254 254 254 254 254 254 254 254 254 25 | 147 5 0 0 0 0 0 0 0 0 0 1 24 93 176 228 247 251 253 254 254 254 254 254 254 254 254 254 254 254 26 | 154 7 0 0 0 0 0 0 0 0 1 25 97 184 234 248 252 254 254 254 254 254 254 254 254 254 254 254 254 254 27 | 178 12 0 0 0 0 0 0 0 3 28 108 192 237 249 253 254 254 254 254 254 254 254 254 254 254 254 254 254 254 28 | 208 26 1 0 0 0 0 0 5 33 122 207 241 251 253 254 254 254 254 254 254 255 255 255 255 255 254 254 254 254 29 | 239 64 4 0 0 0 2 10 46 137 217 245 251 254 254 254 254 254 255 255 255 255 255 255 255 255 254 254 254 254 30 | 250 137 23 4 2 7 24 71 155 223 246 253 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 31 | -------------------------------------------------------------------------------- /camera_client/averages/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/8.png -------------------------------------------------------------------------------- /camera_client/averages/8.txt: -------------------------------------------------------------------------------- 1 | 254 254 254 254 253 253 252 253 253 254 254 254 254 254 254 255 254 254 253 250 247 245 246 245 251 253 254 254 254 254 2 | 254 255 254 253 247 236 223 217 221 237 250 254 254 254 254 254 253 243 214 172 143 136 141 166 200 234 250 254 254 255 3 | 254 254 254 243 214 182 158 146 145 166 208 247 254 254 254 253 237 165 84 46 35 33 39 58 100 157 219 249 253 254 4 | 254 254 249 210 154 110 84 69 67 81 124 198 248 252 252 242 169 63 16 7 5 7 9 14 28 64 134 221 250 254 5 | 254 254 228 159 88 49 31 23 22 28 51 116 208 247 243 195 68 13 2 1 1 1 1 2 5 16 50 143 237 252 6 | 253 249 189 98 36 13 6 4 4 5 13 44 119 195 192 92 18 2 0 0 0 0 0 0 1 3 13 63 189 249 7 | 253 239 135 45 11 1 0 1 0 0 2 12 42 85 73 26 2 0 0 0 0 1 1 0 0 1 4 19 113 235 8 | 253 217 87 14 2 0 1 1 1 0 0 2 7 15 13 2 0 0 1 3 7 9 6 5 1 0 1 6 49 203 9 | 253 184 44 3 0 3 8 16 16 7 2 1 0 1 1 0 0 2 12 34 55 63 51 31 11 2 0 1 18 148 10 | 252 145 17 0 5 20 41 63 70 59 28 5 0 0 0 0 4 23 77 134 164 170 156 120 60 14 1 1 5 89 11 | 249 99 6 1 18 61 104 134 151 143 110 43 5 0 0 0 25 101 182 218 233 233 229 208 147 54 6 0 1 46 12 | 245 65 2 4 42 121 174 204 216 213 190 119 23 0 0 4 81 187 234 248 251 250 250 245 211 116 20 1 0 17 13 | 242 38 1 6 74 173 219 237 243 243 235 191 62 4 0 19 136 225 250 254 254 254 253 252 242 175 41 3 0 8 14 | 235 24 2 11 105 207 241 250 252 252 247 223 112 9 1 37 172 240 253 254 254 254 254 253 249 210 65 6 1 5 15 | 232 16 2 13 128 223 249 252 254 254 252 235 147 15 2 54 189 246 253 254 254 254 254 254 251 227 88 9 0 3 16 | 229 14 2 15 142 231 250 253 254 254 253 240 165 19 2 59 193 248 254 255 255 254 254 254 252 233 96 10 1 2 17 | 228 13 2 14 143 231 250 253 254 254 253 241 167 19 2 54 190 247 254 254 255 254 254 253 252 232 95 9 1 3 18 | 231 17 1 12 128 225 248 252 254 254 252 237 151 16 0 42 180 242 253 254 254 254 254 253 251 224 83 8 1 4 19 | 236 23 2 9 100 207 241 249 252 252 249 227 122 8 0 28 151 234 252 254 254 254 253 253 246 201 61 5 0 8 20 | 240 36 2 6 66 172 221 239 244 244 236 197 74 3 0 10 107 209 246 252 253 253 252 250 231 161 37 2 1 14 21 | 245 57 3 2 33 118 175 204 216 214 192 131 31 0 0 1 43 153 222 242 247 248 246 236 196 95 16 1 1 34 22 | 251 87 5 1 12 59 108 139 151 142 107 51 9 0 0 0 7 61 143 201 215 218 211 182 116 38 4 1 2 69 23 | 253 130 13 1 2 18 40 63 68 57 33 11 4 0 0 0 0 8 43 95 124 132 118 78 33 7 1 1 12 124 24 | 254 178 31 3 0 1 6 11 13 11 5 4 4 3 2 1 0 1 5 16 28 32 24 16 8 1 1 4 37 181 25 | 254 218 70 11 2 0 0 0 0 0 0 3 10 22 17 6 1 0 1 2 4 5 3 2 2 1 2 13 89 223 26 | 254 241 126 35 7 2 0 0 0 0 4 14 52 100 88 30 5 1 0 0 1 1 1 1 2 2 9 41 156 244 27 | 254 251 186 83 28 11 6 4 4 5 15 49 140 208 194 103 25 4 1 1 1 1 1 2 4 9 29 109 218 251 28 | 255 254 229 146 75 41 26 21 20 28 53 130 220 249 248 205 87 23 6 2 1 3 4 7 15 34 91 190 246 254 29 | 255 254 249 211 147 99 74 64 64 81 135 214 249 254 254 248 198 91 30 14 11 13 20 31 56 105 184 238 253 254 30 | 255 255 254 246 216 178 154 143 147 177 223 250 254 254 254 254 245 198 126 81 61 62 79 106 149 199 239 253 254 254 31 | -------------------------------------------------------------------------------- /camera_client/averages/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/9.png -------------------------------------------------------------------------------- /camera_client/averages/9.txt: -------------------------------------------------------------------------------- 1 | 254 254 254 254 253 251 244 231 215 198 184 180 195 217 237 247 252 254 255 255 255 255 255 255 255 255 255 254 254 253 2 | 254 254 254 253 248 236 202 154 105 72 56 58 74 115 169 218 244 253 254 254 255 255 255 255 254 255 255 254 253 252 3 | 254 254 253 249 228 165 93 44 22 11 8 8 12 25 62 128 204 241 252 254 254 255 255 255 255 254 254 254 251 250 4 | 254 254 250 229 153 67 22 9 4 2 1 1 1 3 10 33 108 208 247 254 254 255 255 254 254 254 254 250 242 242 5 | 254 252 241 170 61 17 5 1 0 0 0 0 0 0 1 5 33 132 229 252 254 254 254 254 254 254 251 238 213 212 6 | 253 250 212 88 16 3 0 0 0 0 0 0 0 0 0 0 8 62 196 247 254 254 254 254 254 252 242 205 164 167 7 | 252 243 153 32 3 0 0 0 0 0 0 0 0 0 0 0 1 28 154 240 254 254 254 254 252 246 217 158 110 114 8 | 252 225 82 7 0 0 0 1 4 8 10 9 3 0 0 0 0 13 109 231 253 254 254 253 249 229 173 101 65 70 9 | 249 191 32 2 0 0 2 11 27 45 56 52 31 9 1 0 0 5 80 220 252 254 254 250 236 192 120 57 34 37 10 | 243 143 11 0 0 2 16 52 94 131 150 150 120 54 7 1 0 2 62 210 250 253 251 240 205 137 66 31 16 20 11 | 235 91 3 0 1 10 56 124 180 209 221 221 206 140 35 3 0 1 52 199 247 250 243 214 148 78 37 15 7 11 12 | 222 51 1 0 2 32 116 192 229 242 245 248 241 205 81 9 0 1 51 190 238 239 220 163 89 41 17 6 4 10 13 | 206 23 1 0 7 66 168 228 247 251 252 253 251 233 135 22 3 2 56 177 221 217 173 98 46 19 6 3 5 21 14 | 182 11 0 0 15 98 202 243 252 253 254 254 253 245 180 45 7 7 63 157 190 166 105 50 20 6 3 3 12 52 15 | 156 6 0 1 20 122 217 248 253 254 254 254 254 249 206 74 15 17 67 126 137 102 49 19 7 3 3 9 37 98 16 | 136 4 0 1 23 137 226 249 254 254 254 254 254 251 222 111 32 32 66 88 77 43 17 5 2 4 8 34 84 151 17 | 128 3 0 1 23 141 228 249 253 254 254 254 254 252 230 138 53 45 55 48 30 12 5 2 3 7 29 83 137 192 18 | 131 4 0 1 19 132 223 248 252 253 254 254 253 251 231 152 67 44 37 18 8 3 2 1 5 24 79 137 187 221 19 | 151 6 0 0 14 109 208 243 251 252 253 253 253 248 224 148 65 32 15 5 3 1 1 4 20 70 137 186 217 238 20 | 174 10 0 0 8 77 179 228 244 248 249 249 248 238 201 120 45 16 4 0 1 0 2 16 63 130 183 218 236 247 21 | 199 20 0 0 3 35 126 189 220 228 228 229 225 203 152 71 21 4 0 0 0 2 10 51 122 183 218 238 248 251 22 | 222 39 1 0 1 10 60 121 153 165 167 164 152 126 78 27 4 0 0 0 0 8 40 114 179 220 240 247 251 252 23 | 237 72 2 0 0 2 12 38 60 69 68 64 57 42 19 4 0 0 0 0 6 33 101 174 217 240 249 251 252 253 24 | 247 127 8 0 0 0 1 5 10 12 12 11 9 6 2 0 0 0 0 5 28 92 168 217 241 250 252 252 253 254 25 | 251 186 25 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 4 23 85 165 220 241 250 252 253 253 253 254 26 | 253 224 68 6 0 0 0 0 0 0 0 0 0 0 0 0 0 4 21 77 161 217 244 250 252 253 254 254 253 254 27 | 253 245 144 24 3 1 0 0 0 0 0 0 0 0 0 1 4 21 72 151 218 244 250 252 253 254 254 254 254 254 28 | 254 251 209 81 17 4 1 1 0 0 0 0 0 0 1 8 28 78 157 219 245 251 253 254 254 254 254 254 254 254 29 | 254 253 244 170 68 25 11 5 3 3 2 2 3 7 17 44 96 171 224 247 252 253 254 254 254 254 254 254 254 254 30 | 254 254 253 236 171 101 56 34 24 21 22 25 32 50 85 138 191 231 249 253 254 254 254 254 254 254 254 254 254 254 31 | -------------------------------------------------------------------------------- /camera_client/averages/A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/A.png -------------------------------------------------------------------------------- /camera_client/averages/A.txt: -------------------------------------------------------------------------------- 1 | 231 238 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 255 255 251 255 255 251 251 254 244 225 216 248 2 | 231 238 254 255 255 255 255 254 255 255 255 255 255 254 255 255 252 252 252 250 251 253 250 246 234 195 140 92 91 159 3 | 224 237 250 246 249 252 252 254 253 251 248 248 247 249 245 247 248 245 245 242 240 229 209 195 114 53 31 50 58 92 4 | 227 238 244 241 241 241 241 242 244 248 248 246 244 242 242 242 242 237 223 203 171 123 93 47 25 12 3 35 51 69 5 | 227 234 241 241 238 238 236 234 234 235 238 238 238 236 224 213 169 134 130 81 64 44 23 17 8 3 3 33 51 66 6 | 224 237 240 238 234 231 231 231 231 227 223 211 205 178 140 112 63 45 31 22 15 8 6 3 6 3 3 31 51 65 7 | 220 234 237 234 234 230 228 228 216 203 184 155 119 82 48 37 17 11 5 3 0 0 0 3 3 3 3 30 51 75 8 | 214 233 233 229 220 209 204 180 150 124 94 59 40 24 17 8 1 0 0 0 0 0 0 0 1 1 7 44 62 101 9 | 212 228 213 202 184 148 129 98 60 43 37 25 11 3 3 0 0 0 1 1 0 0 0 0 0 12 36 80 91 170 10 | 221 212 179 145 126 86 50 31 21 18 16 13 3 4 3 2 3 7 7 6 0 0 0 0 25 63 105 152 177 238 11 | 218 174 125 98 87 43 19 17 13 16 18 11 7 6 8 9 14 27 27 18 3 0 0 14 65 141 207 232 240 247 12 | 214 130 87 72 61 14 13 10 11 9 10 10 13 19 24 36 62 79 72 47 14 3 2 33 136 214 244 245 248 251 13 | 208 92 72 58 42 4 2 6 5 10 22 25 41 57 77 96 124 157 164 104 33 6 10 49 176 243 247 250 251 251 14 | 210 71 62 46 31 0 6 10 17 35 46 55 83 124 136 156 182 212 209 158 51 6 12 60 198 246 249 251 251 252 15 | 199 60 60 44 27 5 10 22 30 47 62 98 133 152 181 203 226 239 238 176 81 8 19 68 204 248 253 253 253 254 16 | 193 60 61 44 24 3 19 25 35 55 83 114 155 180 200 218 236 244 240 182 79 11 15 65 213 251 253 255 255 254 17 | 186 64 67 52 30 5 12 16 33 54 86 108 158 191 201 213 228 242 243 179 80 14 14 59 214 248 253 255 255 253 18 | 191 66 71 57 42 19 11 9 14 33 71 88 125 165 175 203 219 224 226 167 78 8 18 58 206 248 253 255 255 251 19 | 203 80 72 62 47 20 15 12 7 16 28 62 78 101 132 160 179 208 198 139 52 5 9 49 191 244 250 255 255 251 20 | 213 102 85 67 52 20 17 17 16 7 7 27 38 51 76 94 110 129 121 84 22 1 0 35 155 236 249 254 254 251 21 | 224 141 100 83 64 25 22 17 16 13 10 14 11 16 19 34 48 52 57 36 5 0 0 20 82 188 232 247 247 244 22 | 227 174 136 112 86 53 30 25 22 21 13 13 12 10 7 6 11 16 19 3 1 0 0 3 15 106 176 210 232 243 23 | 214 197 173 148 130 97 64 54 39 30 24 14 15 10 5 2 2 5 3 3 1 0 0 0 0 19 67 105 136 221 24 | 216 221 207 181 155 143 117 108 95 74 50 33 24 18 13 9 4 1 1 1 0 0 0 0 0 0 6 57 79 134 25 | 222 229 227 218 211 207 183 168 147 124 110 73 60 33 23 20 15 8 3 3 3 0 0 0 0 0 0 32 52 74 26 | 223 231 247 243 239 231 233 216 211 195 171 162 124 106 77 51 32 22 13 9 6 3 0 0 0 0 0 22 47 56 27 | 217 236 250 248 247 244 244 243 237 226 221 206 197 179 150 123 101 81 56 33 27 14 6 0 0 0 0 22 47 54 28 | 217 231 251 251 251 251 248 247 247 247 237 239 240 239 222 208 191 176 164 122 104 75 35 16 4 1 0 28 47 58 29 | 217 227 250 250 253 255 254 253 253 253 251 251 251 250 250 241 236 232 232 234 214 187 164 100 52 16 3 38 48 71 30 | 217 227 250 251 251 255 255 255 255 255 255 254 251 251 251 250 250 250 248 251 248 241 241 236 198 139 80 72 64 101 31 | -------------------------------------------------------------------------------- /camera_client/averages/B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/B.png -------------------------------------------------------------------------------- /camera_client/averages/B.txt: -------------------------------------------------------------------------------- 1 | 254 254 251 250 250 251 251 252 252 253 254 254 254 254 254 254 253 253 253 254 253 251 252 251 252 251 251 249 249 253 2 | 254 250 225 212 211 213 217 219 220 224 228 232 236 239 238 237 233 230 229 228 223 219 214 212 209 206 199 183 192 241 3 | 253 229 170 141 138 136 136 137 139 133 141 151 152 153 151 139 131 123 123 122 116 110 106 106 106 106 99 92 114 190 4 | 252 191 109 78 66 64 61 58 52 49 53 56 54 47 46 39 39 33 31 35 36 36 38 41 39 38 39 41 54 123 5 | 248 149 57 29 25 26 22 20 18 16 13 12 12 9 8 8 8 6 7 9 9 11 12 10 12 13 12 15 26 78 6 | 244 105 24 11 6 5 5 5 3 2 3 2 2 2 3 2 2 2 3 3 3 4 4 5 5 4 4 4 9 43 7 | 242 73 10 3 1 0 1 2 2 3 2 0 0 0 0 0 0 1 1 2 3 3 3 6 4 3 2 3 6 27 8 | 239 59 4 0 2 4 7 8 10 11 10 6 1 0 0 0 1 5 6 6 9 11 16 15 11 4 1 1 4 21 9 | 236 49 2 1 5 18 29 39 42 49 47 33 10 1 0 1 9 24 36 46 52 56 61 53 39 18 4 1 2 13 10 | 238 43 2 1 14 46 77 98 111 123 127 105 50 4 0 4 36 80 115 136 144 147 152 139 103 48 11 1 2 13 11 | 238 41 3 1 24 84 131 163 179 192 198 176 112 15 1 13 88 156 198 214 217 220 219 206 170 93 17 3 2 14 12 | 242 41 2 1 37 115 181 212 224 233 236 223 166 36 3 29 127 207 235 242 243 244 242 235 210 137 31 4 2 16 13 | 242 40 2 2 45 144 211 232 243 246 246 239 204 55 5 42 161 228 246 250 252 251 251 249 231 162 41 5 2 16 14 | 240 43 3 3 54 163 222 240 248 250 249 246 216 73 8 46 176 237 250 254 254 254 253 252 240 174 47 5 2 17 15 | 242 43 2 2 50 167 227 245 248 251 252 249 222 83 8 47 182 241 253 254 255 254 254 254 242 185 52 6 1 18 16 | 242 44 2 2 47 163 227 245 250 253 253 250 222 74 8 43 180 241 253 255 255 255 255 254 244 184 50 5 1 18 17 | 244 47 2 2 43 154 222 243 250 253 253 249 218 67 8 35 170 240 253 255 255 255 254 254 244 177 44 5 2 18 18 | 246 51 3 1 32 134 207 238 248 252 253 246 203 50 4 27 158 235 252 254 255 255 254 253 242 162 36 4 2 21 19 | 247 65 2 1 20 107 186 225 241 246 249 236 172 33 2 15 129 222 250 254 254 254 254 251 233 140 25 3 2 24 20 | 251 85 3 0 9 75 150 195 223 232 227 201 118 17 0 7 93 198 243 251 252 252 251 246 207 104 13 2 3 34 21 | 252 117 8 1 3 40 91 143 172 177 166 130 55 9 0 3 44 153 218 243 247 247 242 224 168 64 6 1 4 51 22 | 253 155 22 2 1 14 39 73 97 98 83 56 24 3 1 2 13 86 165 213 225 223 209 176 108 26 2 1 9 85 23 | 254 197 45 5 1 2 11 26 36 35 24 17 8 2 2 1 2 22 73 135 161 155 136 98 39 6 0 1 20 134 24 | 254 223 86 14 2 0 1 4 5 6 4 7 11 17 13 4 1 3 14 34 52 56 45 25 8 1 0 4 44 187 25 | 254 243 142 43 7 2 1 0 1 0 1 11 37 78 76 25 8 2 2 4 8 9 6 3 1 0 1 15 93 231 26 | 254 251 187 95 30 9 5 2 2 2 7 36 108 175 186 115 34 7 1 0 1 1 1 0 0 2 8 46 168 248 27 | 254 253 228 154 83 38 17 10 9 13 38 104 196 241 241 209 98 26 5 1 2 1 1 0 1 8 32 115 221 252 28 | 254 254 248 205 147 95 72 53 51 71 118 194 242 252 253 245 197 80 18 6 5 3 6 6 13 33 97 196 248 254 29 | 254 254 254 239 203 167 133 121 128 157 205 244 252 254 254 254 246 187 87 33 18 14 18 24 49 109 190 242 254 255 30 | 254 254 254 251 243 225 207 199 206 228 248 254 254 254 255 254 254 244 196 124 74 60 61 90 148 209 244 254 254 255 31 | -------------------------------------------------------------------------------- /camera_client/averages/C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/C.png -------------------------------------------------------------------------------- /camera_client/averages/C.txt: -------------------------------------------------------------------------------- 1 | 253 252 253 250 245 235 222 217 217 219 226 224 228 229 226 224 222 220 216 209 204 199 197 211 228 241 250 252 254 254 2 | 253 253 252 243 218 186 163 149 141 141 143 139 139 138 132 131 123 117 112 102 95 95 101 123 164 209 238 249 252 253 3 | 253 252 247 210 161 116 92 76 64 58 51 44 38 35 29 28 31 29 27 27 30 33 41 52 76 125 196 235 250 252 4 | 253 250 223 157 98 53 35 26 20 15 12 8 6 6 5 6 5 5 5 8 8 11 14 18 28 51 106 198 240 251 5 | 252 244 182 97 45 20 10 8 5 5 4 2 1 1 0 0 0 0 1 2 2 3 4 7 13 23 47 118 217 246 6 | 250 226 131 48 17 8 3 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 3 6 11 22 53 158 238 7 | 246 195 76 21 7 2 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 12 26 87 211 8 | 242 151 37 7 2 1 2 3 3 4 3 3 3 3 3 4 4 4 5 5 6 6 5 1 0 2 7 15 40 167 9 | 232 107 16 3 1 4 10 19 22 20 21 20 19 18 21 20 23 27 27 29 33 36 30 15 3 1 3 9 21 105 10 | 220 68 6 0 2 15 39 64 73 75 79 77 79 80 81 85 92 92 97 105 112 113 99 63 22 4 2 5 13 57 11 | 206 41 2 0 7 36 93 129 150 159 164 165 167 173 175 178 182 184 187 192 192 187 171 134 67 13 2 4 9 30 12 | 191 25 1 1 11 71 148 190 206 215 218 221 224 226 228 228 231 232 232 230 231 228 218 192 124 35 4 3 5 15 13 | 173 16 0 2 19 108 190 225 238 241 244 245 247 248 247 247 247 248 247 247 245 245 240 225 173 68 8 2 3 10 14 | 159 11 0 2 27 136 213 241 247 250 251 253 252 252 252 252 253 254 253 253 252 251 247 237 204 98 14 2 3 8 15 | 151 8 0 3 33 152 227 246 251 253 254 254 254 254 253 254 254 254 254 254 254 252 250 243 218 122 19 3 3 6 16 | 149 7 0 3 38 161 231 246 252 254 254 255 255 254 255 254 254 255 254 255 254 253 251 246 224 138 24 4 3 6 17 | 146 6 0 3 40 159 227 245 251 253 254 254 255 255 255 255 255 255 255 254 254 253 252 247 226 139 26 4 2 6 18 | 147 6 0 2 39 145 218 236 248 252 254 254 255 255 255 255 255 255 255 254 254 253 252 246 222 129 21 2 2 8 19 | 151 5 0 1 30 122 191 220 236 246 253 254 255 255 255 255 255 255 255 254 254 253 251 241 212 105 18 2 2 9 20 | 158 6 0 1 19 85 146 175 204 235 251 254 255 255 255 255 255 255 255 254 254 252 249 233 188 75 11 2 3 12 21 | 165 7 0 0 11 50 85 114 153 209 245 253 255 255 255 255 255 255 254 254 253 250 240 214 145 41 6 2 4 19 22 | 171 12 0 0 2 15 33 50 89 172 237 253 254 255 255 255 255 255 254 254 248 235 205 157 76 16 2 2 5 40 23 | 185 20 2 0 0 2 6 13 41 132 230 253 254 254 255 255 255 255 254 251 232 178 120 71 21 4 2 3 8 79 24 | 202 31 4 2 1 1 0 3 21 106 224 252 254 254 255 255 255 255 254 244 181 88 39 14 5 2 2 4 19 137 25 | 216 52 10 5 3 2 2 3 17 99 223 253 254 254 255 255 255 254 253 233 122 35 10 3 1 1 2 7 52 189 26 | 230 91 22 9 7 7 7 9 26 114 228 253 254 254 255 255 255 254 251 222 85 21 4 1 1 2 4 22 120 225 27 | 242 130 51 26 20 21 23 26 53 156 241 253 254 254 255 255 255 254 251 214 74 17 3 1 2 3 13 66 188 239 28 | 248 182 94 62 54 56 62 70 111 206 247 253 254 254 254 254 255 254 251 218 75 17 4 2 4 10 43 153 231 245 29 | 252 224 152 115 105 111 121 140 183 235 250 253 253 253 254 254 254 254 252 231 102 23 7 5 14 46 137 220 243 251 30 | 252 244 208 177 168 178 186 206 231 248 252 253 253 254 254 254 254 254 252 244 156 47 16 24 63 140 215 241 249 252 31 | -------------------------------------------------------------------------------- /camera_client/averages/D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/D.png -------------------------------------------------------------------------------- /camera_client/averages/D.txt: -------------------------------------------------------------------------------- 1 | 254 252 246 246 253 254 254 255 254 255 254 254 255 254 255 255 255 255 254 255 255 254 255 255 254 252 249 234 235 246 2 | 253 239 191 189 226 248 253 253 253 253 253 253 254 254 254 254 253 254 254 254 254 254 254 253 251 241 211 151 149 217 3 | 252 200 132 121 165 223 241 249 252 252 252 252 253 252 252 251 251 251 251 252 251 250 249 248 233 204 127 69 77 147 4 | 250 147 80 72 99 164 214 234 241 244 246 247 246 245 243 243 243 243 244 243 243 240 236 225 199 136 51 33 39 94 5 | 245 108 38 28 47 91 141 172 186 187 193 198 194 189 189 191 196 190 182 177 178 176 168 155 119 58 20 16 23 59 6 | 239 68 18 11 17 40 68 83 88 89 86 84 79 76 73 67 66 63 62 63 58 58 60 57 44 19 8 8 15 37 7 | 236 45 7 2 3 10 21 27 24 23 20 18 15 12 11 13 15 12 14 15 16 17 18 19 14 6 3 3 10 28 8 | 229 33 4 1 0 0 3 4 4 3 3 2 2 2 3 3 4 4 5 5 6 6 6 6 4 2 2 2 9 24 9 | 230 29 3 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 3 2 3 3 2 1 2 6 20 10 | 228 29 3 0 0 1 3 3 3 2 2 2 2 2 2 2 3 3 2 3 5 6 6 5 3 2 1 1 5 19 11 | 227 33 2 0 2 7 13 15 17 15 14 16 18 17 15 14 14 16 16 20 20 26 30 26 15 6 3 2 6 20 12 | 230 34 2 1 8 29 49 69 76 82 78 76 81 82 80 83 84 85 88 94 102 113 119 101 64 21 4 2 6 21 13 | 232 34 2 1 21 72 117 151 167 175 179 183 190 192 192 194 197 199 199 201 203 201 199 179 124 55 7 3 7 22 14 | 230 33 1 2 37 116 184 217 226 234 236 238 240 242 242 244 243 243 242 242 240 238 232 217 174 90 11 3 7 23 15 | 230 33 1 4 47 148 222 240 249 250 251 252 252 253 253 252 252 252 251 251 250 250 244 233 199 114 16 4 8 25 16 | 230 35 2 3 54 169 232 248 251 252 252 253 253 253 253 253 253 253 253 253 253 252 248 240 212 124 20 3 8 27 17 | 230 35 2 3 55 178 235 250 252 253 253 254 254 254 254 254 254 254 254 254 254 253 250 241 216 128 21 3 8 29 18 | 230 38 3 2 52 174 234 249 253 253 253 254 254 254 254 254 254 254 254 254 253 252 250 240 216 124 18 3 9 32 19 | 229 43 3 2 45 165 231 248 252 253 253 254 254 254 254 254 254 254 254 254 253 253 249 239 206 116 14 4 10 34 20 | 232 48 5 2 32 144 220 243 249 252 253 253 253 253 253 253 254 254 254 253 252 250 246 232 185 98 8 5 11 37 21 | 238 60 7 2 18 112 192 228 241 247 248 249 249 251 249 247 248 249 249 248 243 241 232 208 155 70 5 5 13 44 22 | 246 81 7 2 9 68 150 197 216 227 230 231 236 235 231 226 224 225 226 223 218 210 196 162 111 38 1 6 15 60 23 | 249 114 15 2 3 28 89 128 157 165 169 166 167 162 154 148 151 151 145 144 142 137 125 100 59 12 1 8 21 84 24 | 251 156 26 4 2 7 28 52 65 66 60 55 54 51 46 42 43 43 45 46 46 49 47 38 16 1 3 11 31 120 25 | 252 192 49 10 3 2 5 8 10 11 6 7 6 5 5 5 5 7 7 8 7 6 8 6 2 1 4 16 51 167 26 | 252 226 85 22 6 2 1 1 2 2 1 1 2 2 1 1 2 1 1 1 1 0 1 1 1 2 10 33 94 204 27 | 253 245 142 42 13 6 3 3 3 3 1 2 3 3 2 2 1 1 1 1 1 1 1 2 4 12 29 67 150 230 28 | 254 251 202 99 39 16 11 9 7 7 4 6 6 6 5 4 6 7 7 9 10 11 13 15 18 37 68 126 200 245 29 | 254 252 239 174 92 50 34 29 27 27 29 27 24 24 28 30 31 29 40 46 51 51 57 56 69 93 138 193 238 252 30 | 254 254 251 231 177 124 97 88 91 95 101 106 106 112 114 118 120 123 131 135 137 141 140 139 149 171 203 234 249 253 31 | -------------------------------------------------------------------------------- /camera_client/averages/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/E.png -------------------------------------------------------------------------------- /camera_client/averages/E.txt: -------------------------------------------------------------------------------- 1 | 255 249 237 225 232 229 225 235 236 240 245 251 246 251 249 249 249 244 239 244 238 236 236 232 224 227 232 224 235 248 2 | 252 231 204 180 180 188 188 182 180 183 194 198 197 206 206 207 196 180 179 173 166 163 147 152 142 138 137 127 151 225 3 | 250 214 163 127 118 124 110 110 114 112 102 97 98 93 95 90 78 64 54 55 51 37 44 46 47 44 49 53 77 152 4 | 239 180 90 70 63 46 41 38 41 45 36 33 26 22 21 15 13 13 11 9 10 9 10 12 14 13 15 23 38 94 5 | 229 135 48 26 17 13 17 10 9 11 7 7 7 4 7 3 1 1 1 1 3 4 4 4 5 3 3 9 20 52 6 | 216 75 15 5 2 1 0 3 1 2 2 1 1 3 0 0 0 1 1 1 1 1 2 2 3 3 3 5 14 42 7 | 214 42 6 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 1 1 0 3 2 3 13 27 8 | 210 29 2 0 2 2 4 5 5 3 0 0 0 0 0 0 0 4 4 3 3 4 5 5 0 0 0 2 8 21 9 | 205 13 2 0 3 9 14 19 24 14 0 0 0 0 0 4 11 21 23 23 27 31 29 24 17 2 0 1 7 15 10 | 208 12 1 1 11 27 54 75 87 68 33 5 2 0 0 23 48 72 80 73 84 87 96 84 57 20 2 1 7 16 11 | 200 13 0 2 20 70 123 137 142 131 73 30 10 3 8 49 96 128 138 151 170 171 164 148 106 55 10 2 8 16 12 | 194 11 0 2 34 113 163 190 196 188 143 66 24 11 16 70 144 176 203 220 222 224 213 195 160 98 19 5 7 15 13 | 192 10 0 3 47 146 207 226 232 220 173 90 44 22 23 97 164 196 227 244 245 240 234 221 188 119 35 6 7 15 14 | 203 13 0 6 59 170 234 249 249 240 195 107 54 32 31 110 177 218 241 253 252 249 249 233 200 134 38 11 5 17 15 | 201 12 0 7 75 188 247 251 251 242 208 115 54 33 36 116 183 225 243 254 255 254 251 241 206 138 42 13 8 19 16 | 196 9 0 7 77 197 248 252 254 247 214 121 55 37 42 117 193 227 249 254 255 254 252 243 215 140 41 13 7 20 17 | 198 11 0 9 74 204 249 254 255 249 220 120 58 41 41 113 198 232 249 254 255 255 253 243 217 145 41 13 6 22 18 | 201 14 0 9 76 207 253 255 255 252 224 123 56 40 36 115 201 233 249 255 255 254 253 243 219 151 40 16 7 23 19 | 202 13 1 11 78 207 253 255 255 252 229 125 57 41 40 123 199 235 249 255 255 255 253 244 218 148 39 17 7 22 20 | 202 9 2 11 73 210 253 255 255 254 233 133 62 42 48 126 202 236 249 255 255 255 253 245 219 141 38 15 8 21 21 | 200 8 2 12 70 208 254 255 255 254 239 154 70 45 62 143 204 237 247 255 255 255 251 245 221 138 39 12 7 20 22 | 205 8 1 12 65 210 254 255 255 255 245 179 85 47 75 163 205 237 251 255 255 255 251 245 220 135 42 11 6 19 23 | 213 9 2 13 68 220 254 255 255 255 248 207 114 73 106 180 205 237 252 255 255 255 251 245 219 134 40 10 4 19 24 | 214 14 4 15 73 225 254 255 255 254 253 231 174 141 173 195 213 236 254 255 255 255 251 247 221 131 36 9 4 15 25 | 212 24 5 15 76 226 254 255 255 255 254 247 229 213 216 201 219 237 254 255 255 255 251 247 226 126 36 9 4 8 26 | 225 40 14 24 91 228 254 255 255 255 254 253 254 240 225 205 229 243 254 255 255 255 251 248 229 134 38 11 4 12 27 | 236 67 34 44 121 233 254 255 255 255 255 255 254 246 236 218 235 249 254 255 255 255 252 249 234 147 44 16 5 17 28 | 245 92 58 66 154 239 254 255 255 255 255 255 254 252 246 241 247 252 254 255 255 255 252 250 245 174 54 20 9 30 29 | 250 148 86 104 203 249 255 255 255 255 255 255 255 255 252 251 252 254 255 255 255 255 253 251 247 199 81 41 20 77 30 | 251 209 134 162 230 254 255 255 255 255 255 255 255 254 255 254 255 254 255 255 255 255 253 252 249 229 139 73 65 140 31 | -------------------------------------------------------------------------------- /camera_client/averages/F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/F.png -------------------------------------------------------------------------------- /camera_client/averages/F.txt: -------------------------------------------------------------------------------- 1 | 254 254 253 248 235 221 212 213 217 217 214 219 221 220 223 228 228 232 232 228 229 226 219 215 204 192 163 133 120 171 2 | 254 254 250 233 203 175 161 154 155 156 156 159 158 159 162 168 173 173 174 160 153 143 131 122 112 98 84 68 69 104 3 | 253 253 239 197 151 120 103 97 93 90 82 75 69 64 65 65 66 60 54 51 46 40 38 38 38 34 29 28 32 53 4 | 254 249 213 145 100 66 47 40 37 30 26 20 16 13 11 11 10 10 8 5 6 7 9 8 9 11 11 8 11 23 5 | 253 240 170 96 48 26 17 13 10 9 8 5 4 3 0 0 0 0 0 0 0 1 2 3 3 2 3 4 4 9 6 | 251 222 124 50 16 8 4 2 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 4 7 | 247 191 78 19 5 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 3 8 | 241 152 37 8 1 1 1 2 2 2 2 2 2 1 0 0 0 0 0 0 0 0 1 1 2 3 3 2 2 8 9 | 234 110 18 3 1 5 10 14 15 14 13 15 15 11 3 0 0 0 0 0 0 8 16 21 24 25 27 27 24 49 10 | 223 73 7 0 4 18 39 48 50 52 51 57 63 53 18 3 0 0 0 0 13 48 76 90 88 92 96 93 96 127 11 | 204 40 2 0 10 45 84 102 111 118 126 133 139 121 63 9 0 0 0 4 45 104 141 156 164 165 165 157 162 185 12 | 183 26 0 1 16 75 137 164 182 190 198 200 202 183 117 24 1 0 0 9 78 156 193 204 209 211 208 205 207 219 13 | 158 14 0 1 24 115 181 210 222 229 233 234 231 217 169 42 2 0 0 13 106 191 225 233 237 235 234 233 232 239 14 | 140 10 0 1 29 140 208 234 242 246 248 248 247 237 195 59 5 0 1 20 131 215 241 249 250 248 247 247 245 248 15 | 126 8 0 2 33 156 222 245 251 253 253 254 253 244 209 77 7 0 1 24 140 225 248 253 253 251 251 250 250 250 16 | 120 6 0 1 35 165 231 251 254 254 255 254 254 249 218 83 9 0 1 23 147 231 250 254 254 254 253 253 251 252 17 | 117 6 0 2 35 166 236 252 255 255 255 255 254 250 224 85 10 0 1 22 148 231 251 254 254 254 254 254 254 254 18 | 112 5 0 2 36 164 239 253 254 255 255 255 254 251 225 82 9 0 1 22 149 231 251 255 255 254 255 255 254 254 19 | 116 5 0 2 36 165 239 253 255 254 255 255 254 253 225 78 8 0 1 19 144 231 252 255 255 255 255 255 254 254 20 | 117 7 0 3 34 166 238 253 255 254 255 255 254 252 224 74 7 0 2 19 140 232 252 254 255 255 255 255 254 254 21 | 118 7 0 3 32 164 237 252 255 254 254 255 254 252 221 70 7 0 2 17 139 233 252 254 255 255 255 255 254 254 22 | 118 7 0 2 30 163 237 253 254 254 254 255 255 252 222 72 8 0 2 18 144 235 254 255 255 255 255 255 254 254 23 | 111 5 0 2 28 161 238 253 254 255 255 255 255 253 224 77 10 0 2 19 153 238 254 255 255 255 255 255 254 254 24 | 102 4 0 1 27 157 239 252 255 255 255 255 255 253 231 95 14 2 3 28 170 243 254 255 255 255 255 255 254 254 25 | 95 4 0 1 26 154 239 253 254 255 255 255 255 253 239 126 27 5 6 50 199 246 254 255 255 255 255 255 254 254 26 | 96 4 0 0 24 157 240 252 254 254 255 255 255 254 248 170 59 21 25 100 221 249 255 255 255 255 255 255 254 254 27 | 113 6 0 1 25 164 239 252 254 254 254 255 255 254 252 216 123 75 88 166 236 251 254 255 255 255 255 255 254 254 28 | 157 11 0 1 29 180 241 253 254 254 255 255 255 254 254 243 199 155 162 217 246 253 254 255 255 255 255 255 254 254 29 | 195 27 3 3 47 201 247 253 254 254 255 255 255 255 254 251 238 224 222 241 251 254 255 255 255 255 255 255 254 254 30 | 231 76 8 9 96 225 250 254 254 254 254 255 255 254 255 254 248 243 244 251 252 254 254 255 255 255 255 255 254 254 31 | -------------------------------------------------------------------------------- /camera_client/averages/G.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/G.png -------------------------------------------------------------------------------- /camera_client/averages/G.txt: -------------------------------------------------------------------------------- 1 | 254 254 254 253 245 233 229 231 235 238 242 243 244 244 245 245 246 244 241 241 240 238 236 237 239 244 249 253 254 254 2 | 254 254 253 240 199 160 140 135 139 143 146 148 152 155 157 158 158 157 153 148 142 140 140 146 161 190 224 247 253 254 3 | 254 254 246 191 121 84 66 59 56 53 51 47 44 40 38 36 36 35 34 34 37 41 45 53 67 94 143 209 247 253 4 | 254 252 216 117 62 34 22 17 14 12 10 8 7 5 5 5 4 4 4 5 6 7 8 9 16 28 57 121 217 251 5 | 254 246 158 64 23 9 5 4 3 2 2 2 1 1 1 0 0 0 0 0 0 1 1 2 3 6 16 50 148 240 6 | 254 228 100 27 7 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 15 74 206 7 | 252 190 56 10 1 2 4 4 5 4 3 2 3 2 2 2 1 1 2 1 2 2 2 1 0 0 0 5 27 145 8 | 250 147 26 3 2 9 20 28 28 26 24 22 21 21 21 21 22 19 17 17 19 20 16 9 2 0 0 1 8 80 9 | 243 102 10 1 9 33 64 84 91 89 88 88 88 90 95 101 102 99 95 95 99 101 89 55 20 3 0 0 3 35 10 | 234 67 3 1 21 73 127 155 169 173 173 179 184 189 192 197 199 198 196 198 200 198 184 148 80 19 2 0 1 15 11 | 224 41 1 3 38 122 182 210 223 228 230 233 235 236 237 236 236 238 239 240 241 239 234 216 166 65 8 1 1 6 12 | 213 26 1 6 57 164 218 238 245 248 249 250 250 250 248 247 247 248 250 251 251 250 249 243 219 132 20 2 1 4 13 | 202 18 0 9 77 194 238 249 252 253 253 253 253 253 252 249 249 251 252 253 253 253 253 251 241 186 38 4 1 3 14 | 195 12 0 11 93 212 245 252 254 254 254 254 254 254 253 248 244 250 253 253 254 254 254 253 248 214 59 6 1 3 15 | 191 9 0 12 102 222 249 253 254 254 254 254 254 254 251 230 211 238 251 253 254 254 254 253 250 226 76 7 1 4 16 | 187 7 0 13 107 225 249 254 254 255 255 255 254 254 243 159 115 185 245 253 254 254 254 254 251 231 86 8 1 8 17 | 188 6 0 12 103 222 249 254 254 255 255 255 254 253 220 82 37 105 227 252 254 254 254 254 251 231 87 8 2 19 18 | 192 7 0 10 91 212 247 253 254 254 255 255 254 252 190 41 10 49 201 249 253 254 254 254 250 224 78 8 3 47 19 | 196 7 0 7 72 191 238 252 254 254 254 255 254 249 164 22 3 23 172 244 253 253 254 253 247 209 64 7 5 94 20 | 203 9 0 5 50 152 218 247 254 254 255 254 254 248 147 15 1 11 138 236 251 252 252 250 238 178 43 6 14 148 21 | 212 13 0 2 25 102 179 235 252 254 254 255 254 246 142 12 1 5 103 220 245 249 247 240 213 123 24 4 31 182 22 | 224 23 1 0 10 52 125 212 249 254 254 255 254 246 140 10 0 2 61 178 219 232 227 207 150 60 10 3 41 194 23 | 234 44 3 0 3 18 73 183 246 254 254 255 254 246 141 11 0 1 23 89 143 168 163 126 68 20 3 2 37 189 24 | 243 77 9 2 1 6 38 150 242 254 254 255 254 247 142 12 0 0 4 22 44 65 63 40 17 5 1 1 21 168 25 | 249 122 24 6 2 4 26 126 241 254 254 255 254 248 148 14 0 0 0 2 6 11 12 7 3 1 1 2 8 133 26 | 251 171 54 19 9 8 29 126 241 254 255 255 254 249 157 18 0 0 0 0 1 2 2 1 1 1 1 2 5 96 27 | 253 212 101 45 27 23 47 146 243 254 254 255 254 252 179 28 2 0 0 0 1 1 1 1 1 2 2 2 8 76 28 | 254 239 159 93 61 56 84 185 248 254 255 255 254 253 208 52 6 1 1 1 1 2 3 3 4 5 5 7 16 85 29 | 254 250 212 157 122 113 142 221 251 254 254 255 254 254 235 106 27 11 9 9 9 11 13 16 17 20 20 22 39 122 30 | 254 253 242 209 180 175 201 243 253 254 255 255 255 254 250 193 101 66 65 67 68 69 72 76 77 79 75 67 87 181 31 | -------------------------------------------------------------------------------- /camera_client/averages/H.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/H.png -------------------------------------------------------------------------------- /camera_client/averages/H.txt: -------------------------------------------------------------------------------- 1 | 253 247 238 238 237 240 246 244 245 246 246 249 250 250 249 249 250 251 249 247 248 246 246 247 246 244 236 225 220 244 2 | 251 229 190 175 176 185 192 198 202 204 207 215 219 220 218 219 216 216 213 202 196 188 179 176 168 157 148 123 127 189 3 | 244 182 132 115 110 110 115 114 115 115 119 127 128 130 131 123 115 113 94 87 79 78 73 69 64 68 62 59 65 113 4 | 236 129 77 62 58 57 52 43 44 43 43 41 39 39 38 34 28 27 20 21 23 25 27 24 27 26 29 28 30 58 5 | 227 81 34 22 15 13 11 10 8 9 10 10 9 7 7 6 6 4 4 5 5 7 8 9 9 10 12 14 15 31 6 | 220 54 11 5 3 3 2 2 1 2 1 1 1 1 1 0 0 1 1 2 2 2 2 2 2 3 3 4 8 18 7 | 217 49 8 3 2 2 1 2 1 2 1 1 1 1 0 0 0 0 0 0 1 2 2 2 3 4 3 4 6 21 8 | 224 81 23 16 14 12 11 10 12 9 6 4 3 1 0 0 0 1 3 6 9 10 13 12 16 17 18 19 21 53 9 | 234 132 64 48 47 47 49 48 49 45 29 18 8 4 0 0 1 11 29 43 50 55 59 67 68 69 67 64 70 127 10 | 245 181 123 105 103 108 110 116 121 119 97 52 22 12 3 0 8 37 80 109 132 147 152 159 159 162 158 150 158 193 11 | 250 222 179 161 165 173 178 186 190 192 174 122 42 23 7 1 20 82 144 185 209 219 219 218 220 222 220 213 209 225 12 | 253 243 220 209 217 221 228 232 238 235 220 170 68 33 14 2 31 121 183 221 239 244 244 246 247 245 242 240 239 245 13 | 253 250 243 239 240 242 248 250 251 249 241 203 90 39 21 4 41 147 202 232 249 251 252 252 253 252 251 250 249 250 14 | 253 250 250 250 248 249 250 252 254 253 248 220 106 45 23 6 50 162 212 240 252 254 254 254 254 254 253 253 253 253 15 | 254 251 251 252 251 251 252 253 255 254 251 228 113 47 27 8 58 170 214 242 252 254 254 254 254 254 254 254 253 253 16 | 253 252 252 252 252 252 253 254 255 254 253 231 117 49 28 8 58 173 216 243 253 255 254 254 254 255 255 254 254 254 17 | 253 252 252 252 252 252 252 254 255 254 253 231 119 49 29 8 57 171 217 242 253 254 255 255 255 254 254 254 255 254 18 | 254 251 251 251 252 252 253 254 255 254 253 228 117 51 27 7 53 165 214 241 253 254 255 254 254 254 254 254 254 254 19 | 253 252 250 250 250 251 253 254 254 254 252 222 110 49 25 6 47 148 204 237 250 254 254 254 253 253 253 252 252 252 20 | 253 250 248 248 249 249 251 251 252 252 246 208 98 45 21 2 36 130 189 227 247 252 252 248 248 246 244 240 239 246 21 | 253 248 240 235 235 240 242 243 245 243 230 178 74 38 16 1 22 98 164 205 224 232 232 228 222 217 210 204 206 228 22 | 252 237 212 200 199 203 205 208 209 207 187 128 52 27 11 0 14 53 115 158 175 176 174 168 164 161 156 147 147 185 23 | 249 205 145 126 125 123 126 125 131 122 107 63 26 13 4 0 5 20 53 84 99 98 96 96 97 98 95 81 87 133 24 | 244 149 71 51 49 49 48 47 46 43 30 15 7 4 1 0 0 4 14 20 24 29 27 30 34 35 34 30 30 71 25 | 233 91 25 15 14 13 12 11 9 7 5 2 1 1 0 0 0 0 0 1 3 3 3 5 4 3 3 3 5 26 26 | 227 53 8 3 3 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 2 4 15 27 | 220 50 8 3 2 2 2 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 1 2 5 5 6 9 25 28 | 221 72 16 9 7 7 6 6 6 6 4 5 6 6 4 5 7 6 7 7 8 9 10 14 17 19 21 21 29 60 29 | 236 113 42 27 28 30 28 27 27 29 35 36 38 42 44 47 47 46 45 51 52 52 55 62 70 74 71 67 73 112 30 | 248 181 102 74 78 85 91 93 99 105 114 128 144 148 151 153 156 151 145 147 145 138 141 142 144 141 134 125 128 174 31 | -------------------------------------------------------------------------------- /camera_client/averages/I.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/I.png -------------------------------------------------------------------------------- /camera_client/averages/I.txt: -------------------------------------------------------------------------------- 1 | 205 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 235 210 197 192 224 255 2 | 211 245 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 230 164 94 139 157 161 210 3 | 194 232 255 254 245 245 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 192 116 42 83 128 157 205 4 | 202 235 255 247 235 245 250 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 250 176 80 39 42 107 148 187 5 | 213 240 249 225 224 225 225 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 223 162 69 39 27 102 138 166 6 | 206 250 228 215 206 202 205 233 255 255 255 255 255 255 255 255 255 255 255 255 255 255 216 138 61 29 10 88 127 166 7 | 196 245 217 205 199 152 165 219 243 255 255 255 255 255 255 255 255 255 255 255 255 255 216 136 60 26 9 88 130 158 8 | 206 230 207 205 174 147 145 190 230 245 248 255 255 255 255 255 255 255 255 255 255 255 210 118 55 26 0 82 130 147 9 | 215 205 187 176 147 137 127 179 205 239 245 245 239 255 251 254 255 255 245 255 240 254 196 117 53 24 0 83 130 148 10 | 195 176 145 123 135 107 117 137 190 216 234 234 221 227 229 233 252 248 240 245 235 231 189 109 39 22 0 76 137 148 11 | 190 157 131 90 119 106 109 125 166 177 187 196 204 204 194 196 204 196 205 209 204 195 142 74 38 24 0 76 143 148 12 | 155 138 127 86 80 87 97 107 137 137 144 152 155 156 151 147 150 139 123 131 124 101 96 49 29 9 0 76 133 147 13 | 153 137 127 78 58 52 79 86 102 108 98 104 100 77 80 72 70 74 77 69 51 47 51 31 29 8 0 85 142 147 14 | 151 135 126 78 51 41 46 30 37 56 49 49 39 39 51 50 44 48 40 14 13 18 6 9 9 0 0 84 147 147 15 | 147 133 125 78 49 20 19 19 19 28 34 16 16 16 9 8 5 5 5 1 0 0 0 0 0 0 0 85 147 147 16 | 145 133 125 78 49 9 4 9 9 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92 146 147 17 | 153 137 125 78 49 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82 147 152 18 | 150 137 125 78 49 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 137 154 19 | 151 142 125 78 49 9 0 0 0 1 0 19 19 12 0 1 0 0 0 0 0 0 0 0 0 0 0 74 137 156 20 | 160 147 125 78 49 9 0 0 27 22 35 29 38 32 27 29 29 29 36 24 19 25 17 0 0 0 3 77 151 156 21 | 146 137 125 78 58 14 4 24 42 73 69 77 108 109 93 77 67 81 81 94 102 114 79 42 5 0 4 79 147 156 22 | 148 137 135 78 58 28 44 73 120 162 173 209 237 213 214 194 179 187 208 211 229 225 152 91 29 0 0 61 143 156 23 | 163 137 134 86 66 63 74 151 208 232 237 244 245 251 244 242 240 252 251 254 254 250 189 106 41 9 0 61 142 158 24 | 180 152 141 88 85 121 123 172 232 245 254 255 255 255 255 255 255 254 255 255 255 254 204 117 48 19 0 58 142 166 25 | 159 154 149 97 99 138 161 190 250 255 255 255 255 255 255 255 255 255 255 255 255 255 225 119 60 26 0 68 142 166 26 | 186 162 156 146 130 184 191 208 254 255 255 255 255 255 255 255 255 255 255 255 255 255 225 135 82 26 0 68 147 166 27 | 186 203 160 166 184 225 211 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 227 142 88 41 9 89 147 166 28 | 186 234 183 198 250 235 224 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 237 163 88 45 32 122 147 166 29 | 186 236 232 235 254 235 244 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 245 180 104 52 56 137 155 167 30 | 186 245 235 250 255 245 247 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 216 142 109 119 143 161 179 31 | -------------------------------------------------------------------------------- /camera_client/averages/J.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/J.png -------------------------------------------------------------------------------- /camera_client/averages/J.txt: -------------------------------------------------------------------------------- 1 | 249 249 251 252 252 253 253 253 253 254 253 253 252 250 251 251 252 253 252 246 211 131 85 90 114 149 193 229 243 250 2 | 250 249 251 252 253 253 253 253 253 253 254 253 252 251 251 250 251 252 252 234 140 48 14 18 33 71 129 197 231 245 3 | 249 252 251 252 253 253 253 253 253 253 254 253 253 251 251 251 251 252 250 211 72 14 2 1 4 13 40 112 200 237 4 | 250 251 252 251 253 253 253 253 253 253 254 254 253 252 251 251 251 252 248 177 49 6 0 0 0 3 9 34 132 221 5 | 251 251 251 250 252 253 254 254 254 254 254 254 253 253 253 253 252 251 246 164 39 4 0 0 0 0 3 9 46 186 6 | 250 250 248 248 250 253 253 253 254 254 254 254 254 254 254 254 252 252 247 166 41 4 1 0 0 1 1 3 15 122 7 | 249 247 242 243 247 251 253 253 253 254 254 254 254 254 254 254 253 252 247 181 56 7 3 2 1 1 2 3 7 61 8 | 247 242 230 232 239 249 253 254 254 255 255 255 255 255 255 255 254 253 249 208 97 25 8 5 2 1 1 2 4 27 9 | 245 227 205 209 229 244 252 254 254 255 255 255 255 255 255 255 254 253 249 232 152 81 46 29 10 3 2 2 3 14 10 | 239 204 167 181 207 237 250 253 254 255 255 255 255 255 255 255 254 253 251 243 213 165 134 101 43 12 2 2 2 8 11 | 229 161 122 134 184 226 247 252 254 255 255 255 255 255 255 255 254 253 252 249 241 228 210 177 109 26 4 1 2 5 12 | 209 116 67 83 144 216 245 252 254 255 255 255 255 255 255 255 255 254 253 252 250 245 237 220 166 59 10 2 2 3 13 | 186 66 27 35 103 202 241 250 254 255 255 255 255 255 255 255 255 254 254 253 252 251 248 236 202 87 16 2 2 3 14 | 155 32 7 16 70 187 238 251 254 254 255 255 255 255 255 255 255 255 254 255 253 253 250 243 218 109 19 2 2 3 15 | 124 15 2 5 47 176 237 250 254 255 255 255 255 255 255 255 255 255 255 255 254 253 252 246 225 123 23 2 2 2 16 | 100 8 1 3 37 163 234 250 254 254 255 255 254 255 255 255 255 255 255 255 255 254 253 248 223 127 26 2 1 3 17 | 87 5 1 3 34 153 229 248 252 254 254 254 255 254 255 255 255 255 255 255 255 254 253 247 218 126 24 3 1 3 18 | 89 4 0 3 32 146 223 245 251 253 254 254 254 254 254 254 254 254 254 254 254 253 252 243 210 112 22 2 1 2 19 | 94 4 0 2 28 133 211 238 247 250 251 250 252 253 253 253 252 251 252 252 252 250 245 233 189 89 18 2 1 2 20 | 100 2 1 2 25 113 189 221 234 239 239 242 245 244 243 242 238 238 239 238 238 235 230 210 158 66 11 2 1 4 21 | 111 4 1 2 21 89 150 185 195 203 205 203 209 208 206 203 199 198 202 200 201 199 193 169 113 41 6 2 2 5 22 | 119 5 1 2 13 57 98 120 130 133 131 129 125 125 123 121 121 122 125 125 131 131 126 106 60 17 3 2 2 8 23 | 123 9 1 1 6 27 43 56 58 60 55 55 50 46 44 43 44 42 41 45 50 51 54 44 23 5 2 2 2 16 24 | 133 16 1 1 1 5 10 12 14 13 13 10 10 9 10 10 8 8 9 10 9 10 11 10 3 2 1 2 4 43 25 | 156 30 2 1 0 1 1 2 2 2 2 2 1 1 1 1 1 1 2 3 2 1 1 0 0 1 1 3 13 82 26 | 179 45 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 1 1 3 7 38 134 27 | 201 66 13 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 2 4 7 27 83 185 28 | 217 101 28 10 6 4 4 3 2 1 1 1 1 0 1 1 1 1 2 3 2 2 3 5 8 12 32 71 142 222 29 | 232 152 61 28 21 16 14 12 11 10 7 7 9 8 7 7 8 10 11 14 16 18 23 29 33 47 82 133 201 242 30 | 242 203 111 70 51 50 48 46 42 38 43 45 44 49 53 56 53 56 60 59 68 70 73 79 90 114 156 202 240 251 31 | -------------------------------------------------------------------------------- /camera_client/averages/K.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/K.png -------------------------------------------------------------------------------- /camera_client/averages/K.txt: -------------------------------------------------------------------------------- 1 | 252 249 233 230 236 242 245 245 244 245 245 248 249 250 250 250 248 250 249 249 246 246 244 238 234 232 223 207 199 241 2 | 251 221 183 174 177 186 191 195 197 201 201 208 216 220 217 217 218 214 214 207 193 180 170 157 146 135 112 100 114 177 3 | 243 178 128 116 115 118 113 113 112 108 110 111 118 122 120 111 102 101 90 81 69 61 55 51 48 43 40 40 48 98 4 | 232 124 72 60 54 51 48 45 42 42 42 40 37 36 33 29 27 24 20 14 14 12 14 14 12 13 14 15 19 49 5 | 216 77 30 21 17 15 14 12 11 11 10 8 6 5 3 3 2 2 2 3 2 2 2 3 4 6 7 8 10 25 6 | 207 42 13 7 5 3 2 2 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 5 7 16 7 | 207 36 7 2 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 4 4 6 23 8 | 216 54 12 8 7 7 8 7 9 9 6 2 0 0 0 0 0 0 0 0 1 9 14 16 14 18 18 15 19 59 9 | 227 113 42 32 38 40 46 52 55 51 39 20 5 0 0 0 0 0 0 0 21 49 66 75 77 76 69 62 71 125 10 | 240 173 116 99 101 111 120 125 126 117 88 50 13 0 0 0 0 0 0 17 70 121 149 165 162 161 151 143 148 189 11 | 247 213 173 164 169 179 184 187 182 162 123 65 19 0 0 0 0 0 1 40 115 166 195 208 217 215 213 211 214 230 12 | 251 240 220 215 216 222 226 221 207 188 138 68 14 0 0 0 0 0 5 51 137 190 220 231 240 243 242 240 240 248 13 | 253 248 242 238 240 241 242 236 219 193 133 52 4 0 0 0 0 0 2 48 138 199 227 240 249 251 251 250 251 253 14 | 253 252 251 250 250 249 249 242 221 185 105 21 0 0 0 0 0 0 0 27 119 190 223 241 250 253 253 253 253 254 15 | 253 255 252 252 252 252 251 239 211 148 50 4 0 0 0 0 0 0 0 7 66 152 210 233 247 252 254 254 255 254 16 | 254 254 254 254 253 251 247 225 173 72 13 1 0 1 1 1 1 0 0 1 13 80 163 216 239 248 252 252 253 254 17 | 254 254 254 254 252 249 233 185 90 16 4 1 6 12 18 13 8 1 0 0 1 15 76 157 212 237 246 251 252 253 18 | 253 253 253 252 247 236 187 99 22 5 3 3 27 74 96 66 26 10 2 1 0 0 12 65 138 199 232 244 249 250 19 | 253 252 251 248 236 189 107 27 6 2 5 24 93 161 180 162 103 37 11 3 2 0 1 9 53 122 183 219 238 247 20 | 252 250 247 236 197 114 37 7 2 4 14 74 172 217 228 223 191 120 41 13 3 2 1 1 10 50 108 161 207 237 21 | 251 247 234 196 124 41 11 3 3 11 54 156 226 244 249 245 235 198 119 45 13 3 1 0 0 7 33 87 146 207 22 | 250 239 200 128 49 8 3 2 7 37 138 220 245 252 253 254 251 243 203 134 55 16 4 2 0 0 6 25 81 152 23 | 247 219 137 56 10 3 2 6 29 118 212 244 252 253 254 254 254 252 242 212 146 63 22 8 3 1 1 3 24 97 24 | 247 178 62 13 2 3 5 24 98 200 242 252 253 255 255 255 254 254 251 241 217 154 78 31 11 6 2 1 4 37 25 | 239 111 17 3 3 6 18 79 191 241 251 253 254 254 255 255 254 254 253 251 245 227 169 85 38 14 7 2 2 15 26 | 228 56 6 4 6 17 69 176 233 249 253 254 254 255 255 255 255 255 254 253 252 247 231 175 98 45 14 7 4 10 27 | 211 31 6 6 15 61 164 226 249 253 254 255 255 255 255 255 255 255 255 254 254 253 249 228 179 106 48 18 11 22 28 | 198 32 11 13 44 147 223 245 252 253 254 254 255 255 255 255 255 255 254 255 254 254 253 249 233 183 109 50 31 46 29 | 206 51 23 35 121 213 245 252 253 254 254 255 255 255 255 255 255 255 255 255 255 255 254 253 249 234 187 114 76 85 30 | 232 86 47 100 197 238 251 253 253 254 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 249 230 180 128 140 31 | -------------------------------------------------------------------------------- /camera_client/averages/L.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/L.png -------------------------------------------------------------------------------- /camera_client/averages/L.txt: -------------------------------------------------------------------------------- 1 | 240 214 180 178 183 184 189 197 205 209 209 208 206 202 202 203 205 204 196 191 189 185 184 177 176 168 155 134 154 209 2 | 229 169 129 124 125 128 129 130 134 139 140 134 133 130 129 129 124 116 112 105 100 93 92 87 90 87 79 72 90 157 3 | 195 117 85 78 77 77 75 72 73 68 63 56 50 46 44 38 35 32 29 29 29 27 25 26 30 30 31 32 42 94 4 | 146 73 44 41 38 35 33 32 28 20 18 15 13 11 10 9 8 6 5 6 6 5 6 7 8 9 11 12 19 48 5 | 106 37 17 12 11 10 9 9 7 3 2 2 2 1 1 1 1 1 1 1 1 2 3 3 4 4 3 5 9 24 6 | 79 15 5 2 3 2 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 1 2 2 3 4 14 7 | 72 8 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 2 7 8 | 103 15 3 2 2 2 1 1 1 2 1 1 2 3 2 2 2 2 3 2 1 2 3 3 2 0 0 0 0 5 9 | 139 50 19 13 13 15 16 16 15 15 15 13 12 12 12 14 14 14 14 14 15 18 19 20 10 2 0 0 0 3 10 | 175 96 55 47 52 52 53 53 51 51 52 49 47 47 48 50 49 51 54 54 57 67 71 70 46 12 1 0 0 2 11 | 207 144 110 100 104 111 114 115 116 116 115 120 121 120 124 125 124 129 132 137 146 152 152 136 94 31 2 0 0 2 12 | 229 191 161 158 161 169 172 174 176 179 180 185 190 190 194 199 200 201 203 205 210 211 205 187 140 55 5 0 0 2 13 | 242 219 202 201 205 210 214 217 221 224 227 228 230 231 232 234 237 236 235 237 240 239 231 214 167 75 9 0 0 1 14 | 247 238 231 231 234 237 237 239 242 245 246 246 247 248 249 248 249 248 248 249 250 248 243 227 186 91 11 0 0 2 15 | 250 246 244 245 248 248 248 249 249 251 252 253 252 253 253 253 253 253 254 253 253 252 249 235 197 104 12 1 0 2 16 | 251 250 251 252 252 252 252 252 253 253 254 254 254 254 254 254 254 254 254 254 253 253 251 239 203 107 12 2 1 2 17 | 252 251 252 253 254 254 254 254 254 254 254 255 254 254 254 254 254 254 254 254 253 253 251 241 205 108 13 2 2 3 18 | 252 253 253 254 254 255 254 254 254 255 255 255 255 254 254 254 254 254 254 254 253 253 250 241 204 104 12 2 2 4 19 | 253 253 253 254 254 255 255 255 254 255 255 255 255 254 254 254 254 254 254 254 253 252 248 237 196 97 12 2 2 5 20 | 253 254 254 254 254 255 255 255 254 255 255 255 255 255 254 254 254 254 254 253 252 251 243 227 183 82 10 2 2 6 21 | 253 254 254 254 254 254 255 254 255 255 255 255 255 254 254 254 254 254 253 253 250 244 230 205 151 59 7 1 2 5 22 | 253 255 254 254 254 254 255 255 255 255 255 255 255 255 254 255 254 254 254 252 245 224 189 155 104 37 3 1 3 6 23 | 253 254 254 254 254 254 255 255 255 255 255 255 255 255 254 254 255 255 253 251 229 170 106 80 50 16 1 1 3 7 24 | 253 254 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 254 253 247 202 101 38 18 14 3 1 1 3 7 25 | 252 254 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 254 254 243 174 55 12 3 2 1 0 1 4 8 26 | 253 254 254 254 255 255 255 255 255 255 255 255 255 255 254 255 254 254 253 239 148 38 6 2 1 1 1 2 4 11 27 | 253 254 254 255 255 255 255 255 255 255 255 255 255 255 254 255 254 254 253 239 143 32 4 1 1 1 1 2 4 16 28 | 254 254 254 254 254 255 255 255 255 254 254 255 255 255 255 255 255 255 253 242 151 34 5 1 1 2 2 4 7 33 29 | 254 254 254 254 255 255 255 255 255 254 255 255 255 255 254 254 254 254 254 244 175 47 7 2 2 3 5 7 17 80 30 | 253 254 254 254 254 254 255 255 254 254 255 255 255 255 254 254 254 254 254 249 214 90 19 8 7 9 16 22 57 156 31 | -------------------------------------------------------------------------------- /camera_client/averages/M.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/M.png -------------------------------------------------------------------------------- /camera_client/averages/M.txt: -------------------------------------------------------------------------------- 1 | 254 252 244 246 250 251 252 253 254 254 253 253 254 254 254 254 254 253 253 252 253 253 253 251 251 252 249 240 237 250 2 | 254 238 204 198 209 218 224 229 231 236 240 239 239 238 235 233 230 227 226 225 223 221 210 197 189 176 157 136 151 212 3 | 252 201 146 134 138 144 148 151 156 157 163 162 157 155 152 149 139 129 121 112 104 97 92 84 77 71 63 60 72 139 4 | 248 152 91 79 79 81 80 79 73 72 68 65 58 53 47 48 42 37 33 29 27 27 27 28 28 26 25 27 36 77 5 | 243 102 43 32 29 28 25 22 22 18 16 15 14 13 13 11 13 10 10 7 6 5 7 8 10 11 13 12 15 45 6 | 242 71 18 8 6 7 5 4 3 2 1 3 2 2 2 3 2 3 2 1 1 1 1 2 4 4 4 5 9 34 7 | 236 65 8 3 2 2 1 1 0 0 0 0 0 0 2 2 2 3 2 2 1 2 1 2 3 2 2 3 7 44 8 | 243 95 13 3 1 2 0 0 0 0 0 0 2 4 8 13 15 15 14 13 12 12 15 17 20 21 18 18 28 84 9 | 248 142 52 14 7 3 2 1 0 0 0 0 8 17 31 45 60 67 68 66 69 70 71 80 87 87 81 73 91 165 10 | 250 188 105 62 32 15 5 2 1 0 0 3 14 30 57 80 106 129 143 155 167 169 176 177 183 185 176 167 180 212 11 | 253 229 164 125 94 60 33 12 4 0 0 3 12 35 70 101 145 174 196 216 226 227 230 231 232 229 221 218 224 239 12 | 254 246 217 186 157 128 90 54 24 6 1 2 8 27 65 105 155 196 222 241 247 247 249 248 247 245 243 240 242 246 13 | 254 252 243 232 218 201 168 125 73 27 7 0 2 12 37 91 154 205 235 250 253 254 254 253 252 252 250 248 249 250 14 | 254 254 252 249 245 238 221 190 141 73 20 1 0 1 13 54 125 202 240 252 254 254 254 254 254 254 254 252 251 252 15 | 255 254 254 254 252 249 244 225 185 119 40 2 0 0 3 29 96 189 238 253 254 255 255 255 254 254 254 254 253 254 16 | 255 254 254 254 254 252 248 234 202 140 53 4 0 0 2 23 83 177 237 252 255 255 255 255 255 255 254 254 254 254 17 | 255 255 254 253 253 252 248 237 207 142 59 6 0 0 3 23 85 181 236 252 255 254 255 255 255 255 254 254 254 254 18 | 255 254 253 253 251 251 244 232 196 131 48 6 1 1 5 37 107 195 238 252 254 254 255 255 255 255 254 254 254 254 19 | 254 252 250 248 246 242 231 205 165 94 29 3 3 5 22 69 139 208 238 251 254 254 254 254 254 254 254 253 253 254 20 | 254 250 245 240 231 221 196 158 101 40 6 2 7 21 48 94 155 204 234 248 252 252 253 252 252 251 249 247 247 251 21 | 253 245 232 216 195 167 129 78 32 6 2 4 12 32 63 100 145 187 217 234 242 245 244 241 239 233 231 222 225 244 22 | 252 234 200 168 130 88 44 14 4 0 0 4 13 31 60 92 124 153 174 189 199 203 203 203 194 187 173 165 170 212 23 | 251 215 152 92 48 19 5 1 0 0 0 2 6 21 40 63 86 98 104 110 117 111 112 108 108 102 91 86 99 156 24 | 251 177 69 22 6 1 1 0 0 0 0 1 2 6 15 21 27 31 33 33 31 30 27 26 28 28 26 25 37 93 25 | 250 122 24 4 1 0 1 0 0 0 0 0 0 1 2 4 4 5 4 4 5 4 4 4 3 4 3 4 7 45 26 | 248 80 12 4 3 2 2 1 1 1 0 0 0 0 1 1 1 1 0 0 2 1 1 1 1 1 2 2 6 29 27 | 245 70 18 8 7 7 6 6 5 5 4 4 3 2 2 3 2 1 0 2 4 3 3 4 4 3 3 4 12 39 28 | 244 89 31 18 14 17 17 16 16 15 14 15 13 14 18 18 17 15 11 9 14 14 18 20 21 19 18 20 26 70 29 | 247 138 61 44 43 47 49 50 53 58 62 64 64 69 71 71 70 66 64 63 60 58 63 65 70 68 65 59 71 126 30 | 251 205 116 92 97 109 123 138 148 156 164 171 176 174 175 173 177 172 172 167 164 163 161 160 159 155 146 138 148 189 31 | -------------------------------------------------------------------------------- /camera_client/averages/N.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/N.png -------------------------------------------------------------------------------- /camera_client/averages/N.txt: -------------------------------------------------------------------------------- 1 | 254 251 244 241 249 251 252 252 252 252 253 253 254 253 254 253 252 252 252 252 253 252 250 249 248 247 244 232 228 245 2 | 252 229 194 180 186 201 213 218 226 226 229 228 231 230 228 226 221 218 220 218 209 203 200 190 182 168 149 130 136 196 3 | 246 184 125 115 113 119 128 134 136 135 132 133 132 125 115 110 105 95 88 86 85 82 74 68 70 66 59 51 62 113 4 | 240 133 76 60 58 61 60 58 55 50 46 42 40 35 27 24 20 17 18 17 15 19 20 19 20 21 21 20 24 57 5 | 234 89 31 17 18 15 13 14 13 10 7 5 5 5 6 5 4 4 4 5 5 6 6 6 7 7 8 7 10 29 6 | 233 58 10 2 2 2 1 1 1 0 0 0 0 1 1 1 2 1 2 3 3 3 4 4 4 4 4 4 6 18 7 | 235 59 5 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 3 3 3 4 3 4 5 5 4 7 23 8 | 241 105 21 4 0 0 0 0 0 0 0 0 0 1 5 7 7 9 9 8 10 10 12 13 15 14 14 13 20 62 9 | 246 166 77 36 14 4 0 0 0 0 0 0 0 15 35 48 65 74 76 84 86 86 87 83 83 81 75 74 86 144 10 | 249 207 145 104 70 26 6 1 0 0 0 0 5 33 68 101 136 161 181 187 190 194 196 191 186 182 173 162 169 209 11 | 251 235 201 169 142 101 48 12 2 0 0 0 5 40 88 130 174 207 222 232 236 238 238 238 234 232 230 228 228 238 12 | 252 249 238 223 203 172 125 69 21 4 0 0 4 28 86 141 188 220 235 244 247 248 247 248 248 248 247 246 245 248 13 | 252 252 249 246 239 225 197 153 96 39 7 1 1 13 66 128 185 221 237 245 249 250 250 251 251 252 252 251 250 251 14 | 252 253 254 253 251 249 240 219 184 120 53 15 3 6 34 87 158 210 236 246 250 252 252 253 253 252 252 252 252 252 15 | 252 253 254 254 254 254 254 250 233 204 153 79 31 15 17 42 104 173 220 239 249 252 253 254 254 254 253 253 253 253 16 | 253 254 255 255 255 255 254 254 249 243 225 182 117 53 23 23 44 101 165 212 236 247 251 253 254 254 254 254 253 254 17 | 253 254 254 254 255 255 255 254 253 252 248 237 204 141 64 26 19 33 70 140 195 229 242 248 253 254 254 254 254 255 18 | 253 254 253 254 254 254 254 254 254 254 253 251 236 206 136 57 17 9 14 43 105 171 210 232 244 250 253 254 253 254 19 | 254 253 252 252 252 253 253 254 254 254 253 251 243 224 181 121 41 7 2 4 20 70 141 190 219 238 247 251 253 253 20 | 252 251 249 249 249 249 250 251 252 252 253 250 243 226 196 147 83 15 1 0 2 11 45 110 164 203 226 238 245 251 21 | 252 247 238 237 239 241 243 243 245 246 247 244 237 224 198 152 101 40 1 0 0 0 4 27 80 136 178 199 218 239 22 | 251 237 212 204 208 214 217 222 223 226 227 223 219 202 176 137 98 48 4 0 0 0 0 2 16 57 107 139 172 214 23 | 249 212 159 140 139 148 150 152 157 163 157 159 156 152 129 102 74 38 4 0 0 0 0 0 1 8 38 71 109 170 24 | 246 164 77 53 54 60 60 56 56 59 64 63 65 62 54 50 35 14 1 0 0 0 0 0 0 0 3 14 38 105 25 | 241 95 25 12 12 12 10 8 7 8 8 8 7 7 6 5 4 1 0 0 0 0 0 0 0 0 0 1 7 49 26 | 235 53 11 5 3 2 4 3 2 1 2 2 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 5 29 27 | 228 55 16 9 7 5 6 6 5 5 5 4 3 3 3 2 1 1 2 2 2 4 5 6 6 5 5 6 11 37 28 | 236 81 28 18 14 14 15 14 14 13 13 13 13 14 13 13 14 15 17 18 20 20 24 25 27 25 25 25 31 67 29 | 245 130 57 39 36 39 40 40 38 41 41 42 44 49 50 52 57 64 66 67 70 74 75 72 71 69 67 60 69 110 30 | 251 199 118 94 91 103 111 119 124 121 123 129 135 142 145 156 162 166 172 173 177 172 167 163 163 156 136 122 126 168 31 | -------------------------------------------------------------------------------- /camera_client/averages/O.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/O.png -------------------------------------------------------------------------------- /camera_client/averages/O.txt: -------------------------------------------------------------------------------- 1 | 255 255 255 255 255 255 255 255 254 255 245 238 242 239 218 188 210 194 230 230 237 251 254 254 255 255 255 255 255 255 2 | 255 255 255 255 255 254 255 247 227 203 186 184 143 111 67 55 54 60 87 119 104 125 165 213 232 255 255 255 255 255 3 | 255 255 255 255 255 255 233 191 144 134 88 70 45 4 0 9 10 16 15 22 20 31 57 112 158 195 227 243 255 255 4 | 255 255 255 254 243 223 154 115 58 18 10 4 0 0 0 0 1 1 0 0 1 12 12 16 56 112 150 219 252 255 5 | 255 255 255 252 192 145 64 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 7 12 33 68 113 210 254 6 | 255 255 254 227 147 59 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 51 169 242 7 | 255 255 252 165 59 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 52 197 8 | 255 246 209 96 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 155 9 | 255 230 156 15 0 0 0 0 0 5 25 33 40 47 56 66 45 71 27 22 19 20 8 1 0 0 0 0 0 79 10 | 242 192 62 0 0 0 0 10 35 87 99 118 142 172 184 201 192 186 172 172 170 118 91 54 25 0 0 0 0 26 11 | 242 159 12 0 0 0 1 50 140 186 206 213 228 244 250 242 240 238 226 223 214 218 197 167 91 0 0 0 0 1 12 | 242 57 0 0 0 0 57 144 217 229 230 254 255 254 255 252 248 248 248 248 254 254 244 242 167 93 0 0 0 0 13 | 230 12 0 0 0 44 128 214 235 255 255 254 255 255 255 255 255 255 255 255 254 255 255 254 223 135 24 0 0 0 14 | 206 7 0 0 1 74 177 233 242 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 244 200 33 0 0 0 15 | 193 0 0 0 17 113 196 242 250 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 218 47 0 0 0 16 | 188 5 0 0 16 140 196 242 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 218 70 0 0 0 17 | 188 12 5 0 19 120 187 242 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 206 74 0 0 0 18 | 212 43 5 0 9 109 171 242 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 203 41 0 0 0 19 | 231 48 11 0 0 105 147 218 251 255 255 255 255 255 255 255 255 255 255 255 255 255 255 245 223 186 37 0 0 0 20 | 243 73 12 0 0 45 107 178 222 235 246 245 254 255 254 255 255 254 255 255 254 252 244 242 215 116 26 0 0 0 21 | 254 134 26 0 0 19 40 87 184 227 221 229 239 248 254 246 246 254 241 242 238 228 226 199 164 88 10 0 0 23 22 | 254 186 48 12 0 1 21 36 79 137 151 164 178 214 224 230 230 222 228 228 219 211 163 112 67 10 0 0 2 30 23 | 255 195 94 27 0 0 0 12 17 41 62 81 87 107 159 181 157 161 158 141 133 117 70 34 33 0 0 0 17 80 24 | 254 253 168 46 11 6 0 0 0 1 12 13 25 25 34 45 37 44 43 41 29 17 12 0 0 0 0 0 35 131 25 | 255 254 210 110 28 12 3 0 0 0 0 0 3 11 24 29 12 12 9 6 3 0 0 0 0 0 1 19 77 173 26 | 255 255 251 188 91 25 12 1 0 0 0 0 0 0 6 6 6 1 0 0 0 0 0 0 0 2 19 48 148 217 27 | 255 255 254 240 175 92 29 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 50 111 207 236 28 | 255 255 255 254 237 184 112 51 25 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 32 53 101 180 242 242 29 | 255 255 255 255 254 251 213 138 84 59 34 29 18 2 0 7 4 2 7 0 0 0 1 49 104 158 187 241 254 254 30 | 255 255 255 255 255 254 253 221 186 174 125 114 86 45 17 25 43 47 39 23 23 52 125 178 191 210 237 242 254 255 31 | -------------------------------------------------------------------------------- /camera_client/averages/P.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/P.png -------------------------------------------------------------------------------- /camera_client/averages/P.txt: -------------------------------------------------------------------------------- 1 | 249 236 174 186 231 248 252 253 254 254 254 254 254 254 254 253 254 253 254 254 253 253 253 252 250 248 246 238 234 244 2 | 246 180 77 81 166 225 244 249 251 252 251 251 252 252 251 251 251 250 250 249 248 245 242 236 231 223 215 204 203 221 3 | 235 105 36 29 73 163 211 230 235 237 235 233 233 231 229 228 227 227 224 218 212 204 198 192 186 181 174 170 171 190 4 | 214 61 18 13 19 70 133 163 170 169 166 163 161 162 162 163 166 166 163 157 153 149 145 142 140 139 134 130 134 155 5 | 190 38 10 7 7 14 36 54 61 62 62 64 65 67 74 80 88 91 92 92 91 91 90 90 89 89 88 85 89 113 6 | 173 25 7 4 3 4 6 9 10 11 11 12 13 15 18 23 29 35 38 40 42 45 46 46 47 49 49 49 53 75 7 | 167 19 5 2 2 2 2 2 3 3 3 3 3 2 3 4 5 7 8 10 12 13 14 16 18 20 22 22 26 42 8 | 169 17 4 2 1 0 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 3 4 5 6 7 8 10 24 9 | 174 16 3 2 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 2 4 5 6 7 9 24 10 | 179 16 3 2 2 2 4 5 5 5 5 5 6 7 6 3 1 0 0 0 0 2 6 13 18 21 21 21 26 48 11 | 182 16 3 2 6 13 20 25 25 26 26 27 31 35 34 20 5 1 0 0 1 10 31 50 58 60 59 58 62 86 12 | 184 15 3 3 16 45 69 82 87 87 88 90 97 106 101 70 23 2 0 0 3 32 75 99 107 108 105 102 102 122 13 | 183 16 3 4 29 89 138 168 179 181 179 182 188 192 182 140 59 7 0 0 9 69 126 151 157 154 151 145 144 161 14 | 184 16 3 5 39 122 187 218 230 233 233 234 237 238 230 196 98 14 1 1 18 112 176 200 203 201 195 188 185 199 15 | 184 16 3 5 43 142 210 236 244 248 248 249 250 250 245 223 129 20 2 1 30 150 212 231 233 231 227 222 219 226 16 | 187 17 4 4 42 150 218 241 248 251 252 252 252 252 248 232 143 23 2 2 41 177 233 246 248 247 245 242 240 243 17 | 192 20 4 3 36 145 218 242 249 251 252 253 253 252 249 231 141 21 2 3 50 193 243 251 252 252 252 250 250 250 18 | 202 23 4 3 27 130 212 240 248 250 252 252 252 251 246 224 124 17 1 3 58 204 247 253 254 254 253 253 253 253 19 | 212 32 5 2 15 105 196 234 245 248 249 249 249 248 241 207 96 11 1 4 68 213 249 254 254 254 254 254 254 254 20 | 225 45 6 3 8 69 165 219 238 244 245 245 245 242 229 175 58 5 1 5 83 221 251 254 254 254 254 254 254 254 21 | 235 67 9 3 3 32 118 186 221 231 236 236 234 226 196 120 27 2 2 9 107 227 252 254 254 254 255 254 254 254 22 | 242 104 14 5 2 9 58 129 176 199 207 207 202 181 133 56 8 1 3 17 136 235 253 254 254 255 255 254 254 254 23 | 245 152 24 7 3 3 16 55 101 127 139 139 129 104 56 15 2 2 5 33 168 241 253 254 254 255 255 254 254 254 24 | 248 200 47 12 5 3 4 12 33 49 57 58 50 33 14 4 2 4 10 69 197 246 254 254 254 254 254 254 254 254 25 | 249 231 98 21 8 4 3 3 6 10 12 12 10 6 3 1 3 6 25 122 222 250 254 254 254 254 254 254 254 254 26 | 250 244 169 49 15 7 4 3 2 2 3 2 3 2 2 3 6 15 65 177 239 252 254 254 254 254 254 254 254 254 27 | 250 248 220 114 34 13 6 4 3 2 2 2 2 2 3 5 13 44 132 218 248 253 254 254 254 254 254 254 254 253 28 | 250 250 242 190 89 31 13 7 5 4 3 3 4 5 7 16 41 107 194 241 252 253 254 254 254 254 254 254 254 253 29 | 250 251 248 235 179 97 43 21 11 8 6 6 8 12 24 53 111 184 234 250 253 253 253 253 253 253 253 253 252 252 30 | 249 251 251 247 233 191 130 76 43 28 21 21 30 51 89 141 197 234 249 252 252 252 252 252 252 252 252 251 251 251 31 | -------------------------------------------------------------------------------- /camera_client/averages/R.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/R.png -------------------------------------------------------------------------------- /camera_client/averages/R.txt: -------------------------------------------------------------------------------- 1 | 254 254 249 247 246 249 250 251 249 250 251 252 252 252 252 253 253 254 252 252 251 251 252 250 249 248 246 237 237 245 2 | 254 247 220 205 203 205 203 204 203 207 212 217 220 224 230 231 231 231 229 223 221 219 208 206 196 183 165 147 154 213 3 | 253 222 170 150 143 140 138 133 133 136 138 139 142 147 145 148 148 144 135 125 115 106 101 94 84 79 68 62 73 143 4 | 250 183 127 107 94 89 83 77 68 68 62 61 58 56 54 54 52 47 45 40 36 30 29 27 27 27 25 25 35 81 5 | 246 151 81 57 47 37 32 27 25 22 17 12 9 9 9 10 9 9 8 10 10 9 9 9 11 11 9 11 18 46 6 | 240 114 43 21 13 9 4 5 6 5 3 1 1 1 1 1 0 1 1 2 2 1 1 2 3 2 2 4 9 33 7 | 235 76 16 5 3 1 1 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 2 3 7 37 8 | 235 50 6 1 3 6 7 9 11 11 12 7 4 2 1 1 1 1 2 5 7 8 9 8 10 12 10 11 21 65 9 | 235 37 1 1 8 17 28 38 40 44 43 41 29 16 13 11 10 11 18 30 42 49 54 56 59 57 50 49 60 130 10 | 232 33 0 2 17 45 71 90 103 113 116 109 89 57 35 27 24 30 45 77 99 126 135 142 148 146 136 133 144 193 11 | 231 29 0 3 28 82 133 163 175 184 188 185 158 106 55 39 35 43 70 109 148 174 192 205 211 212 208 206 209 231 12 | 233 26 0 5 46 126 185 210 223 226 232 230 208 148 66 36 35 42 74 123 165 198 225 235 241 244 244 240 241 245 13 | 234 24 0 6 59 164 220 239 246 246 249 247 230 171 61 23 23 26 55 114 168 210 236 245 248 250 251 251 251 252 14 | 233 25 0 7 76 185 237 250 254 252 254 253 239 176 49 11 7 8 23 76 151 203 237 247 250 253 253 253 253 253 15 | 234 27 0 7 84 195 244 253 254 254 254 253 241 169 35 4 0 0 3 20 91 175 223 247 251 253 254 254 254 254 16 | 233 27 0 7 86 201 245 254 254 254 255 253 240 152 23 0 0 0 0 3 22 97 189 232 248 252 254 254 254 254 17 | 232 25 0 7 85 203 245 252 254 254 254 252 236 127 14 0 0 0 0 0 3 25 96 186 228 246 253 254 254 254 18 | 232 25 1 6 79 197 241 250 253 253 254 249 225 91 7 0 0 0 0 0 0 2 19 85 172 223 244 252 254 254 19 | 232 25 1 4 66 183 232 246 250 250 250 242 199 57 2 0 3 2 1 0 0 0 1 16 71 158 208 241 250 254 20 | 231 25 1 3 49 155 213 236 242 242 238 224 148 25 1 4 27 35 16 4 0 0 0 2 14 62 144 196 233 249 21 | 232 27 1 1 30 116 170 200 213 214 208 167 74 7 4 29 98 135 102 35 8 0 0 0 1 12 52 125 183 233 22 | 234 32 1 1 14 68 113 142 153 147 130 84 21 2 13 92 186 219 206 134 48 8 2 0 0 1 10 44 110 199 23 | 237 39 2 0 6 26 52 69 73 68 51 23 4 4 43 157 231 247 244 219 140 51 10 2 1 0 1 9 41 138 24 | 242 52 5 0 2 6 12 16 18 14 8 1 1 13 83 208 247 254 254 248 226 152 56 12 4 1 0 2 12 71 25 | 244 72 10 2 2 2 2 1 2 1 0 0 3 29 139 234 253 254 254 254 250 229 157 62 18 7 1 2 5 29 26 | 247 109 23 7 3 3 2 1 1 1 1 2 11 66 196 249 254 255 255 254 254 251 232 169 73 23 7 3 4 17 27 | 250 155 47 18 11 8 8 6 4 4 6 10 36 131 232 253 254 255 255 255 254 254 252 234 171 77 25 6 8 21 28 | 252 196 88 44 28 24 23 22 22 18 22 39 97 203 251 254 254 255 255 255 255 254 254 251 236 176 76 29 20 40 29 | 254 231 146 101 81 72 69 67 68 69 81 115 189 240 254 255 255 255 255 255 255 255 254 254 251 234 173 83 55 76 30 | 254 250 202 159 138 137 136 137 144 150 174 209 240 253 254 254 255 255 255 255 255 255 255 254 254 251 232 165 107 125 31 | -------------------------------------------------------------------------------- /camera_client/averages/S.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/S.png -------------------------------------------------------------------------------- /camera_client/averages/S.txt: -------------------------------------------------------------------------------- 1 | 252 253 253 253 250 244 234 230 231 241 248 253 254 254 254 255 254 254 254 255 254 254 250 225 187 182 216 240 251 253 2 | 253 253 253 250 240 212 188 177 177 191 216 241 251 254 254 254 254 254 254 254 254 253 234 148 83 86 137 204 243 251 3 | 253 253 252 239 202 163 136 121 116 124 153 198 240 251 254 254 254 254 255 254 254 249 206 84 35 31 57 124 215 247 4 | 253 253 247 211 153 104 77 62 58 63 83 123 193 241 251 254 254 255 255 254 253 243 177 55 20 13 20 55 149 234 5 | 253 251 232 163 101 55 35 23 21 23 33 60 119 202 246 253 254 255 255 254 253 239 165 45 14 4 8 21 80 210 6 | 253 248 200 116 53 22 10 7 6 6 8 17 55 134 226 250 254 255 255 254 252 240 170 47 12 2 3 9 34 160 7 | 252 240 153 68 20 6 3 3 2 1 1 3 16 68 171 242 251 254 254 254 253 245 190 63 16 4 2 5 17 100 8 | 250 220 106 31 6 2 6 7 3 1 1 1 3 24 104 213 248 253 254 255 253 247 214 105 27 6 2 3 10 56 9 | 248 188 66 11 2 9 18 26 19 5 0 0 1 6 46 160 239 250 254 254 254 250 232 159 64 15 3 2 6 32 10 | 243 149 34 3 4 21 49 69 58 26 3 0 0 1 15 96 214 247 253 254 254 252 245 207 122 35 7 2 4 19 11 | 234 106 12 1 8 45 92 125 118 75 22 2 0 0 3 43 163 238 251 254 254 254 249 234 179 73 13 3 3 12 12 | 222 71 4 1 16 84 149 180 178 139 64 7 0 0 0 14 98 215 248 253 254 254 251 244 212 116 23 4 3 9 13 | 209 37 1 2 32 124 194 217 221 195 127 34 2 0 0 3 46 171 239 250 254 254 252 248 225 152 36 6 3 6 14 | 188 20 0 3 49 163 220 241 245 233 186 85 9 0 0 1 15 103 218 247 253 254 253 250 234 172 45 6 3 5 15 | 169 10 0 3 60 185 234 249 251 247 228 152 30 1 0 0 3 51 176 238 251 254 254 250 238 182 52 7 3 5 16 | 149 4 0 5 70 195 240 250 253 252 244 205 85 7 0 0 1 17 109 221 247 253 254 250 239 184 54 8 2 5 17 | 140 4 0 7 74 199 242 250 253 253 250 235 152 27 1 0 0 4 54 180 239 250 254 250 238 177 48 9 2 5 18 | 137 5 0 6 70 192 239 249 253 253 253 247 200 73 5 0 0 1 19 120 220 245 251 249 231 160 38 6 3 8 19 | 143 8 0 5 57 175 230 248 252 253 254 252 231 136 20 2 0 0 4 56 176 231 245 242 214 132 26 5 3 11 20 | 161 13 1 3 41 139 215 243 252 253 254 253 245 194 58 5 1 0 1 19 110 199 222 218 184 93 15 3 3 18 21 | 180 23 1 2 24 98 185 231 249 252 254 254 252 227 122 18 2 0 0 4 43 133 181 179 128 47 10 2 4 31 22 | 198 42 3 1 11 59 138 213 247 252 254 255 253 242 189 51 6 0 0 0 8 51 102 107 63 21 4 2 7 52 23 | 221 74 9 2 5 22 82 181 241 251 253 254 254 250 224 115 18 2 0 0 0 9 28 35 21 7 1 3 11 87 24 | 238 110 20 3 3 10 40 138 232 250 253 254 254 254 239 184 52 7 0 0 0 0 5 9 5 1 1 5 25 136 25 | 247 155 38 9 2 6 20 99 223 250 254 254 255 254 248 223 114 21 3 0 0 0 0 1 0 0 2 10 50 184 26 | 252 194 73 23 7 5 13 79 217 251 253 254 255 254 252 242 190 59 11 2 0 0 0 0 0 1 5 21 98 221 27 | 252 231 117 49 21 11 18 79 216 251 253 254 255 254 254 250 232 139 38 11 2 0 0 0 2 5 15 52 159 239 28 | 253 247 175 85 46 28 33 96 226 251 253 254 255 255 254 254 247 210 101 32 11 4 2 3 7 15 41 110 212 247 29 | 253 251 227 142 84 59 62 132 235 252 253 254 255 255 254 254 253 243 191 98 41 20 15 17 22 46 97 185 239 252 30 | 253 253 247 214 141 103 109 187 246 253 253 254 255 255 255 255 254 253 239 191 116 68 53 54 72 116 179 233 249 254 31 | -------------------------------------------------------------------------------- /camera_client/averages/T.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/T.png -------------------------------------------------------------------------------- /camera_client/averages/T.txt: -------------------------------------------------------------------------------- 1 | 240 186 66 45 116 210 245 253 254 255 255 255 255 255 254 255 255 253 254 254 254 254 254 253 253 253 252 253 251 250 2 | 228 119 27 14 65 159 236 252 254 255 255 255 255 254 255 254 255 255 255 255 255 255 254 255 254 254 253 252 251 251 3 | 196 57 9 6 32 109 215 249 254 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 254 253 252 251 250 4 | 152 29 4 2 17 82 190 245 254 255 255 255 255 255 255 255 255 255 255 254 254 255 254 254 253 253 252 251 249 249 5 | 113 16 2 0 10 69 171 243 253 254 255 255 254 254 254 254 254 254 254 254 254 253 253 253 253 252 251 249 245 246 6 | 90 11 1 0 7 61 157 234 251 254 255 254 254 254 253 253 254 254 253 252 252 252 252 250 249 249 247 244 239 242 7 | 79 8 1 0 6 54 149 225 248 253 254 254 254 253 253 252 252 251 251 249 248 248 246 244 243 240 236 230 227 230 8 | 83 8 1 0 4 48 137 214 243 251 252 252 250 249 248 245 244 241 240 241 237 234 230 227 221 214 208 202 199 212 9 | 86 7 0 0 3 40 115 192 231 242 242 240 237 232 230 223 221 217 215 211 206 200 196 191 184 175 171 166 162 176 10 | 92 7 0 0 1 31 93 154 193 206 209 201 199 192 187 179 179 176 173 166 161 158 151 147 143 140 135 131 128 140 11 | 101 7 1 0 0 17 56 102 135 148 144 134 130 128 128 125 122 120 118 117 117 112 107 104 104 103 97 90 91 109 12 | 112 9 1 0 0 4 23 44 61 66 61 58 59 60 62 63 65 63 62 66 65 64 64 60 62 61 59 56 57 76 13 | 121 9 0 0 0 0 2 8 12 10 10 10 12 16 17 17 19 20 24 25 28 28 30 31 31 31 30 30 33 45 14 | 122 11 0 0 0 0 0 1 1 0 1 1 1 2 3 4 4 5 6 7 9 9 10 13 13 13 15 14 17 28 15 | 127 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 3 3 5 6 5 7 8 8 8 10 16 16 | 128 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 1 2 3 2 3 4 5 6 7 9 17 17 | 134 11 0 0 0 0 0 0 0 0 0 1 1 0 0 1 2 2 2 4 4 5 6 6 8 10 10 12 15 29 18 | 130 9 0 0 0 0 0 0 0 0 1 2 1 3 4 3 4 8 10 12 14 18 20 22 27 32 35 40 45 61 19 | 123 9 0 0 0 0 2 6 6 7 8 10 14 20 24 25 31 36 44 47 52 57 59 64 68 74 78 79 83 101 20 | 123 7 1 0 0 3 17 33 46 55 57 60 68 75 80 82 83 87 95 98 102 106 111 113 114 119 119 115 118 133 21 | 119 8 1 0 0 15 55 95 123 133 143 143 146 149 150 150 150 154 158 158 161 156 159 162 163 162 161 158 158 172 22 | 114 8 1 0 2 33 86 151 187 207 210 209 207 207 206 206 206 209 211 207 206 203 203 201 200 201 197 195 198 208 23 | 115 9 1 0 4 48 109 189 226 240 242 242 239 239 239 240 239 239 239 238 235 234 232 232 230 228 227 226 224 232 24 | 111 9 2 1 6 55 131 214 238 250 251 250 249 248 248 248 249 247 248 247 248 246 246 246 245 244 242 241 242 244 25 | 106 11 2 1 8 57 148 223 245 254 253 253 253 252 253 253 253 252 251 251 251 251 250 249 249 249 248 247 247 249 26 | 116 12 2 1 9 60 163 233 248 254 254 253 253 253 254 254 254 254 253 253 253 252 252 252 251 251 251 250 250 250 27 | 137 16 2 1 11 63 175 236 251 254 254 253 254 254 254 254 254 254 254 254 254 253 253 253 252 252 252 252 251 252 28 | 169 24 2 2 14 74 191 240 251 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 253 253 253 252 252 253 29 | 203 41 5 2 23 93 209 243 252 255 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 253 253 253 253 30 | 229 86 12 5 38 134 227 250 254 254 254 254 254 255 255 255 255 255 254 254 254 254 254 254 254 254 254 254 253 253 31 | -------------------------------------------------------------------------------- /camera_client/averages/U.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/U.png -------------------------------------------------------------------------------- /camera_client/averages/U.txt: -------------------------------------------------------------------------------- 1 | 255 255 255 241 223 223 255 255 240 255 254 255 241 223 241 255 255 223 222 222 223 223 223 223 255 255 255 255 255 255 2 | 255 217 159 150 141 140 167 134 134 134 166 121 150 145 115 121 110 103 115 114 159 157 151 109 138 224 253 254 255 255 3 | 254 141 95 60 57 61 63 63 58 31 53 58 58 18 20 13 13 0 0 0 14 21 21 3 31 31 74 216 225 255 4 | 254 100 7 3 3 0 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 127 191 255 5 | 212 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41 159 230 6 | 221 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 105 191 7 | 222 57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 152 8 | 230 134 73 63 63 49 42 50 52 39 31 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 152 9 | 255 165 151 151 151 151 151 159 159 159 151 127 127 127 98 120 123 151 120 120 128 144 137 57 23 0 0 0 0 134 10 | 255 193 160 168 159 159 159 168 168 168 168 168 200 200 200 168 191 191 164 205 222 200 190 173 98 35 0 0 0 66 11 | 254 226 214 217 212 216 186 217 223 223 223 223 229 228 228 228 228 255 255 254 254 255 210 190 159 94 0 0 0 54 12 | 255 255 245 223 243 242 243 243 243 243 243 243 255 255 255 255 255 254 255 255 255 255 226 223 191 95 34 0 0 0 13 | 255 255 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 239 223 222 131 64 0 0 0 14 | 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 239 223 223 141 95 4 0 0 15 | 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 239 223 223 164 95 27 0 0 16 | 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 239 223 223 132 95 44 0 2 17 | 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 239 223 220 127 95 33 0 30 18 | 255 255 255 255 255 255 255 255 255 254 255 255 255 255 255 255 255 255 255 255 255 255 238 223 161 109 95 9 0 50 19 | 223 223 223 223 223 223 223 223 223 223 223 251 251 223 255 251 254 251 251 255 255 253 207 177 99 95 95 0 0 65 20 | 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 220 198 138 97 95 94 0 0 38 21 | 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 193 196 196 194 188 127 124 95 95 48 0 0 65 22 | 255 223 223 223 223 222 223 223 223 223 223 212 213 191 191 191 191 191 168 168 154 137 96 95 95 92 0 0 0 54 23 | 255 255 191 205 143 155 183 156 190 182 140 140 151 151 151 125 125 120 95 95 95 95 95 94 16 0 0 0 0 49 24 | 254 194 115 40 5 0 0 0 31 56 54 18 30 41 30 30 30 33 12 28 62 49 11 0 0 0 0 0 0 110 25 | 254 112 63 45 0 0 0 0 8 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 133 26 | 191 87 63 5 31 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 63 191 27 | 160 75 61 31 31 31 22 8 31 31 31 0 0 0 0 0 17 22 22 0 0 0 0 0 0 17 31 31 164 191 28 | 205 95 46 31 31 0 0 0 0 13 20 0 0 0 0 0 31 31 34 31 3 3 3 0 36 60 64 95 190 191 29 | 254 111 86 45 31 31 3 3 31 31 31 3 0 31 27 0 20 46 71 63 31 32 31 45 104 109 115 234 203 250 30 | 255 191 125 66 108 111 83 63 88 53 32 53 88 95 63 31 32 63 63 63 63 51 83 124 113 151 201 254 255 255 31 | -------------------------------------------------------------------------------- /camera_client/averages/V.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/V.png -------------------------------------------------------------------------------- /camera_client/averages/V.txt: -------------------------------------------------------------------------------- 1 | 252 234 183 195 219 235 241 245 249 252 254 254 254 254 254 254 254 254 254 254 254 255 255 254 255 254 255 255 254 253 2 | 248 159 67 58 101 148 178 204 223 240 245 247 249 251 252 253 253 253 253 254 254 253 253 254 254 254 254 254 254 253 3 | 237 80 20 11 19 40 67 100 133 165 192 206 218 228 234 239 244 245 247 249 250 251 251 251 252 253 253 253 253 253 4 | 206 36 6 2 3 5 9 17 33 59 87 118 144 167 184 198 211 221 225 233 238 241 245 247 249 249 250 250 250 252 5 | 192 21 2 0 0 0 0 2 5 7 18 30 55 78 101 123 149 170 182 196 207 214 223 231 236 238 238 240 243 249 6 | 199 20 2 0 0 0 0 0 1 1 2 5 9 17 36 55 76 99 117 137 157 169 184 191 199 207 212 215 226 242 7 | 226 35 2 0 0 0 0 0 0 0 0 0 1 1 4 12 22 37 53 70 91 112 132 148 158 170 175 181 195 225 8 | 241 97 13 4 3 2 1 1 1 1 0 0 0 0 0 1 3 5 13 23 38 58 77 91 106 116 127 139 157 195 9 | 249 183 68 29 17 9 7 4 2 2 1 0 1 0 0 0 0 0 2 4 9 19 34 48 59 71 82 94 116 163 10 | 252 234 165 112 89 67 49 36 24 16 11 6 6 2 1 1 1 0 0 1 2 5 10 16 24 31 40 52 74 122 11 | 253 248 229 206 191 176 153 126 99 78 60 46 34 27 21 15 10 7 5 3 1 1 2 5 8 10 15 21 39 84 12 | 253 252 247 243 236 230 220 208 191 167 146 123 105 83 68 54 38 26 19 13 7 2 1 2 2 4 5 9 19 50 13 | 253 253 252 251 251 249 247 243 238 227 215 199 181 161 136 115 93 67 45 29 19 10 3 0 0 1 1 3 7 30 14 | 253 254 254 254 254 254 253 253 252 247 242 236 227 212 198 176 148 117 86 60 39 21 6 1 0 0 0 1 4 16 15 | 253 254 254 254 255 254 254 254 254 254 252 249 247 238 224 210 186 154 117 89 62 34 11 0 0 0 0 0 2 10 16 | 253 254 255 255 254 254 254 254 254 254 252 252 249 244 234 219 200 166 132 101 74 42 15 2 0 0 0 0 2 9 17 | 253 254 255 255 254 254 254 254 254 254 253 252 249 243 233 214 190 160 130 94 66 38 12 2 0 0 0 0 2 11 18 | 253 254 255 254 254 254 254 254 254 254 251 249 243 231 213 193 164 133 100 73 46 27 9 3 0 0 0 2 5 21 19 | 254 254 254 254 254 254 253 253 251 249 241 233 213 194 168 140 113 86 62 41 26 15 4 2 0 1 1 4 11 39 20 | 254 254 254 253 252 249 248 243 232 217 199 172 145 117 90 71 52 41 28 18 10 6 3 2 2 3 7 15 28 71 21 | 254 253 249 243 236 230 215 193 168 137 105 78 58 44 32 25 18 13 8 5 4 2 3 5 10 16 25 38 60 105 22 | 253 249 226 196 172 149 121 98 66 50 32 20 13 10 7 7 6 3 3 3 4 7 14 25 33 46 62 74 96 144 23 | 253 231 154 103 74 52 36 25 15 9 6 4 3 1 1 1 1 2 5 10 16 29 45 56 72 90 103 114 141 183 24 | 251 175 62 28 18 12 8 4 3 2 1 0 0 0 0 1 3 9 18 30 48 70 86 103 122 140 155 169 186 216 25 | 243 99 20 9 5 3 1 0 0 0 0 0 0 1 4 10 21 37 56 79 101 119 143 160 178 191 201 209 219 235 26 | 227 51 9 4 2 1 0 0 0 0 1 2 5 11 27 48 70 95 119 140 165 182 199 213 221 224 229 232 238 245 27 | 213 38 7 2 2 1 1 1 1 2 7 16 34 60 89 119 145 168 188 206 216 226 234 234 238 242 244 245 247 251 28 | 217 41 7 2 2 3 4 7 13 27 51 80 113 141 173 198 214 226 234 240 244 246 247 248 249 249 250 250 251 252 29 | 234 64 11 5 6 16 31 51 84 116 151 182 205 223 233 240 243 247 247 249 251 251 252 252 253 252 252 253 253 254 30 | 246 123 30 17 36 79 124 161 191 215 232 239 245 249 250 251 252 253 253 253 254 254 254 254 253 254 254 254 254 254 31 | -------------------------------------------------------------------------------- /camera_client/averages/W.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/W.png -------------------------------------------------------------------------------- /camera_client/averages/W.txt: -------------------------------------------------------------------------------- 1 | 253 249 235 237 243 245 248 249 249 250 253 254 254 253 254 254 254 254 253 253 254 254 254 254 254 254 254 253 254 254 2 | 251 217 134 119 143 163 179 198 210 217 226 232 236 241 245 245 246 249 251 251 252 252 252 251 250 249 249 247 244 250 3 | 247 141 52 34 37 55 72 87 101 113 128 144 162 178 192 200 210 218 223 227 227 229 230 228 227 226 220 217 222 235 4 | 240 81 23 13 9 12 16 18 22 30 38 54 71 87 104 120 138 153 165 167 173 176 176 182 183 183 180 178 181 208 5 | 234 54 13 4 3 2 3 3 3 3 6 12 19 27 39 51 65 79 90 100 106 112 116 120 129 129 127 128 140 174 6 | 241 50 10 4 3 2 2 1 1 1 2 2 4 5 7 13 20 26 36 45 53 63 67 73 77 84 86 91 100 139 7 | 246 72 13 6 5 5 4 4 2 2 1 1 1 2 1 1 3 5 8 12 20 27 31 36 39 44 48 52 65 111 8 | 252 143 32 17 12 12 11 9 8 6 5 4 2 2 2 0 0 0 1 2 4 6 9 10 14 18 21 28 41 89 9 | 253 208 107 66 53 47 43 38 34 30 26 22 16 12 8 6 2 0 0 0 1 1 2 3 5 9 13 22 37 91 10 | 254 243 198 161 146 137 128 121 109 99 91 80 62 41 27 15 7 2 0 0 0 0 0 0 4 12 22 37 65 118 11 | 254 252 240 227 221 216 209 202 194 189 179 162 131 91 57 33 16 5 0 0 0 0 0 1 12 32 52 74 102 147 12 | 254 254 251 249 248 247 246 244 241 239 233 220 196 148 93 55 27 9 1 0 0 0 0 7 32 63 95 118 141 179 13 | 254 254 254 254 254 254 254 253 253 251 250 244 227 182 121 78 38 12 2 0 0 0 1 19 59 101 139 163 182 208 14 | 254 254 254 254 254 254 254 255 254 254 254 251 241 201 135 86 45 14 2 0 0 0 0 29 83 138 174 197 208 227 15 | 254 255 255 255 255 255 255 255 255 255 254 254 248 215 144 91 48 16 2 0 0 0 1 37 102 156 194 215 231 243 16 | 255 255 255 255 255 255 255 255 255 255 255 254 248 220 148 91 46 16 3 0 0 0 1 37 105 156 196 220 237 248 17 | 255 255 255 254 255 255 255 254 254 254 254 253 248 222 147 87 46 14 2 0 0 0 1 28 86 140 177 202 225 242 18 | 254 255 254 254 254 254 254 254 254 254 254 253 246 217 144 83 44 12 2 0 0 0 1 18 63 112 144 167 190 223 19 | 254 254 254 254 254 254 254 254 253 254 253 250 238 203 135 74 34 11 2 0 0 0 0 11 38 77 104 121 150 191 20 | 254 254 254 254 254 253 251 251 250 248 245 239 219 170 105 54 25 8 1 0 0 0 0 4 20 43 63 79 107 154 21 | 253 254 250 248 247 246 244 239 233 225 216 199 168 112 66 34 13 5 0 0 0 0 0 1 7 20 33 47 66 121 22 | 253 250 238 226 218 210 197 184 171 153 137 119 90 59 32 15 7 1 0 0 0 0 0 1 3 7 15 23 43 99 23 | 253 237 184 147 132 122 104 87 75 61 50 39 27 16 10 4 2 0 0 0 1 1 2 4 5 9 13 19 36 91 24 | 253 197 89 54 42 34 27 19 15 11 11 7 4 3 1 1 0 0 1 2 4 6 10 16 22 27 31 37 57 104 25 | 249 116 28 12 9 6 4 3 2 2 2 2 1 1 1 2 3 6 9 15 22 30 39 50 58 66 72 78 96 138 26 | 242 68 8 3 3 2 1 1 1 2 2 2 3 3 5 9 16 27 41 56 69 80 91 102 113 123 122 127 137 169 27 | 236 50 7 3 2 1 2 1 2 4 6 7 11 18 31 45 66 82 102 119 130 141 152 161 167 169 170 170 177 205 28 | 239 61 10 5 4 3 5 7 10 17 25 39 53 73 97 120 142 156 169 181 191 199 204 206 207 211 211 211 216 230 29 | 246 100 24 11 13 18 27 38 55 76 103 128 150 168 184 197 210 218 223 229 233 236 238 237 236 235 233 233 237 244 30 | 251 169 63 40 56 88 121 144 171 195 210 220 229 235 240 242 245 248 249 249 250 250 251 251 249 249 249 247 247 250 31 | -------------------------------------------------------------------------------- /camera_client/averages/X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/X.png -------------------------------------------------------------------------------- /camera_client/averages/X.txt: -------------------------------------------------------------------------------- 1 | 249 235 224 237 248 251 254 254 255 254 255 255 255 254 254 254 254 254 254 254 254 254 254 254 254 253 247 223 169 196 2 | 245 206 179 198 226 247 251 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 253 252 245 208 130 70 106 3 | 235 164 139 150 185 224 245 251 254 254 254 254 254 254 255 255 254 254 254 254 254 254 254 251 241 199 119 52 34 56 4 | 217 125 92 99 129 173 215 241 251 253 254 254 255 254 255 254 255 254 254 254 254 254 249 232 186 107 45 20 15 29 5 | 204 80 49 57 82 119 160 204 234 248 253 254 254 254 254 255 254 254 254 253 252 245 219 164 85 34 15 7 7 16 6 | 196 50 20 24 42 72 103 141 190 226 244 251 254 254 254 254 254 254 253 249 236 202 138 63 24 10 5 3 3 13 7 | 195 34 6 5 13 30 55 83 121 171 216 241 250 254 254 254 253 251 245 228 186 110 48 18 7 4 2 1 2 17 8 | 199 48 6 1 2 7 17 38 66 107 153 199 233 248 251 252 251 244 218 168 93 35 10 5 3 2 1 2 4 38 9 | 211 87 19 5 2 0 2 9 25 51 86 130 181 220 236 240 231 201 145 72 24 7 3 2 2 1 3 8 26 109 10 | 222 131 57 26 9 1 0 1 4 16 34 61 100 148 184 188 165 115 53 16 4 2 1 1 2 4 15 45 98 184 11 | 235 170 109 70 39 15 4 0 0 3 7 19 41 63 91 94 71 32 8 2 1 1 1 2 12 32 77 131 179 224 12 | 244 207 159 125 93 58 25 5 0 0 0 2 6 15 24 24 13 3 2 1 0 1 3 18 52 108 162 201 226 241 13 | 249 235 202 173 147 114 72 29 5 0 0 0 0 1 3 2 1 1 0 0 0 3 22 69 131 183 216 232 242 248 14 | 252 247 234 219 198 165 120 67 22 3 0 0 0 0 0 0 0 0 0 0 0 15 61 128 189 220 237 245 249 251 15 | 253 251 248 242 231 205 164 106 41 9 1 0 0 0 0 0 0 0 0 0 1 33 97 166 214 236 245 250 252 252 16 | 253 252 251 249 244 227 195 131 59 13 1 0 0 0 0 0 0 0 0 0 3 44 111 180 223 240 249 252 253 253 17 | 253 252 251 250 245 231 202 139 60 14 1 0 0 0 0 0 0 0 0 0 2 41 110 174 219 238 249 252 253 253 18 | 253 251 249 247 241 222 190 124 49 8 0 0 0 0 0 0 0 0 0 0 0 22 82 151 200 228 243 249 252 253 19 | 252 249 244 237 221 196 156 87 29 2 0 0 0 0 0 0 0 0 0 0 0 5 37 104 166 202 224 237 244 250 20 | 251 245 229 212 185 147 97 41 6 0 0 0 1 1 2 3 1 0 0 0 0 0 7 36 91 152 187 212 229 243 21 | 250 232 200 165 125 84 40 10 0 0 2 3 6 11 21 24 17 7 1 0 0 0 0 3 24 65 115 159 195 226 22 | 246 208 155 103 63 29 8 0 0 2 5 12 27 52 83 94 72 39 16 6 3 1 0 0 4 14 37 77 131 195 23 | 239 174 91 44 16 4 2 2 4 9 20 44 87 141 176 184 166 118 60 26 11 5 1 0 1 2 6 20 55 138 24 | 231 120 36 9 3 2 3 7 14 30 56 114 176 217 232 233 227 204 155 87 39 19 9 3 1 0 1 4 15 66 25 | 223 71 9 4 2 6 12 22 41 79 136 194 232 247 251 252 250 243 226 182 114 52 26 15 7 3 1 1 5 27 26 | 212 45 8 7 8 16 30 52 93 152 209 240 252 254 254 254 254 254 250 237 204 140 77 36 20 12 5 1 3 18 27 | 207 45 14 14 24 40 70 112 175 224 248 252 254 254 254 255 254 254 254 251 242 221 172 104 52 26 14 7 5 21 28 | 211 64 29 34 51 82 135 195 233 249 253 254 254 255 255 255 255 254 254 254 252 249 234 193 130 67 35 21 17 32 29 | 223 97 53 60 95 153 209 239 250 253 254 254 255 255 255 255 255 255 254 254 254 254 250 243 216 161 87 46 36 52 30 | 240 144 95 108 162 216 243 251 254 254 254 255 255 255 255 255 255 255 255 255 255 254 254 253 246 227 177 101 70 94 31 | -------------------------------------------------------------------------------- /camera_client/averages/Y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/Y.png -------------------------------------------------------------------------------- /camera_client/averages/Y.txt: -------------------------------------------------------------------------------- 1 | 244 174 78 112 179 216 238 246 251 253 253 254 254 254 254 254 254 253 253 254 254 254 254 254 254 253 254 254 254 254 2 | 224 87 22 30 86 152 199 227 243 249 251 253 253 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 3 | 180 32 4 5 17 55 102 154 199 226 240 247 249 252 253 253 254 254 254 254 254 254 254 254 254 253 254 254 254 254 4 | 128 13 2 1 3 7 20 51 101 155 195 217 232 241 248 250 253 253 254 254 254 254 254 254 254 254 254 254 253 253 5 | 101 8 1 0 0 1 3 8 24 57 108 152 188 211 229 240 246 251 253 253 254 254 254 254 254 254 253 253 253 253 6 | 124 9 0 0 0 0 1 2 4 11 30 65 107 149 181 211 231 243 250 252 252 253 253 254 253 253 252 251 250 251 7 | 161 17 1 0 0 0 1 1 1 3 6 16 36 68 108 153 192 217 236 245 248 250 251 251 250 248 246 244 243 244 8 | 208 51 4 1 0 0 1 0 0 0 2 3 8 20 45 83 128 171 203 224 236 242 243 241 239 235 231 225 225 231 9 | 232 124 29 8 3 2 1 1 0 0 0 0 1 4 14 31 65 109 152 186 206 218 222 219 215 211 204 198 196 209 10 | 246 201 106 49 25 11 5 2 1 0 0 0 0 1 3 9 21 51 96 136 163 179 182 180 177 173 166 160 161 178 11 | 251 234 190 145 104 67 39 20 8 4 2 0 0 0 1 2 5 18 42 81 113 130 136 136 133 128 123 118 120 141 12 | 252 248 234 215 196 163 126 90 54 27 12 4 1 0 0 0 0 3 12 31 59 74 82 85 84 84 79 75 78 102 13 | 252 252 248 244 240 225 201 173 141 94 49 23 7 1 0 0 0 0 2 9 20 33 38 41 43 45 42 38 42 64 14 | 253 253 253 252 250 246 237 220 197 161 111 56 20 3 0 0 0 0 0 1 5 9 14 16 17 18 17 17 19 32 15 | 253 253 254 253 253 251 247 239 221 191 147 85 39 6 0 0 0 0 0 0 0 2 5 5 7 7 7 8 9 18 16 | 253 253 254 254 254 253 251 245 229 203 163 103 49 9 0 0 0 0 0 0 0 1 1 1 2 3 5 5 6 15 17 | 253 253 254 254 254 254 251 245 229 199 157 96 43 7 0 0 0 0 0 1 1 2 4 5 7 9 11 11 14 29 18 | 252 252 253 254 254 253 248 237 216 178 126 67 26 3 0 0 0 0 0 2 5 12 20 24 26 30 32 33 37 56 19 | 252 252 253 253 250 244 231 209 175 125 71 31 10 0 0 0 0 0 3 11 28 44 57 62 67 69 70 67 70 94 20 | 252 251 249 242 230 209 179 139 91 51 23 6 1 0 0 0 0 4 17 41 72 95 106 110 114 115 114 109 115 136 21 | 251 247 228 206 169 129 86 48 22 10 2 0 0 0 0 1 5 19 49 95 130 151 161 163 164 162 158 154 154 171 22 | 251 232 175 112 70 41 18 7 2 0 0 0 0 0 2 7 21 56 109 155 188 202 208 205 205 204 201 196 194 208 23 | 245 184 74 33 15 7 2 1 0 0 0 0 1 4 12 31 70 122 172 207 226 231 233 233 232 230 227 225 226 231 24 | 233 101 21 8 3 0 0 0 0 0 0 1 6 19 47 88 136 185 218 235 243 246 247 247 246 245 242 240 241 244 25 | 206 45 4 2 0 0 0 0 0 1 2 11 31 66 112 157 199 228 241 248 251 253 253 252 251 250 249 248 247 249 26 | 171 22 1 1 0 0 0 0 1 5 17 51 95 145 186 215 235 245 250 253 254 254 254 254 254 254 253 252 251 252 27 | 142 13 1 0 0 0 0 2 10 36 82 134 181 211 232 242 248 252 253 254 254 255 255 254 254 254 254 254 254 254 28 | 147 14 1 0 0 1 8 24 65 123 174 208 232 243 248 252 254 254 255 255 255 255 255 255 255 254 254 254 254 254 29 | 181 26 3 1 4 22 57 109 166 208 230 243 250 251 253 254 254 255 255 255 255 255 255 254 254 254 254 254 254 254 30 | 221 55 8 5 32 92 155 199 228 242 250 252 253 254 254 254 254 255 255 255 255 255 255 254 254 254 254 254 254 254 31 | -------------------------------------------------------------------------------- /camera_client/averages/Z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/averages/Z.png -------------------------------------------------------------------------------- /camera_client/averages/Z.txt: -------------------------------------------------------------------------------- 1 | 247 240 204 200 229 248 252 253 253 254 254 255 254 254 255 254 255 255 255 255 255 254 254 251 242 224 185 166 186 231 2 | 247 205 147 146 199 240 251 253 254 254 254 255 255 255 255 254 254 255 255 255 254 254 251 240 196 143 102 90 104 181 3 | 241 153 103 106 154 223 248 253 254 254 255 255 255 255 255 254 255 255 255 254 254 251 233 182 109 69 47 41 57 114 4 | 223 115 65 69 114 196 244 253 254 255 255 255 255 255 254 254 255 255 254 254 250 230 175 94 48 28 19 20 26 63 5 | 203 75 35 36 79 173 242 253 254 255 255 255 255 255 254 254 254 254 254 252 230 175 87 37 20 10 6 6 10 36 6 | 187 46 14 18 54 153 238 252 254 255 255 255 255 255 255 255 254 253 250 233 169 80 35 13 5 2 1 2 4 18 7 | 172 25 6 9 37 138 233 251 254 255 255 255 255 254 254 254 252 247 230 168 78 28 10 3 1 0 0 0 1 10 8 | 161 16 1 5 30 127 228 251 254 255 255 255 255 255 254 251 245 228 165 78 27 8 2 0 0 0 0 0 0 8 9 | 158 10 0 3 28 124 228 251 254 255 255 255 255 254 252 242 220 159 73 27 8 2 0 0 0 0 0 0 0 5 10 | 160 9 0 3 28 122 228 252 254 255 254 254 254 253 244 218 154 72 25 6 1 0 0 2 5 2 0 0 0 4 11 | 161 8 0 3 30 123 230 251 254 255 254 254 252 244 218 152 70 23 7 0 0 0 2 15 27 16 1 0 0 4 12 | 164 8 0 3 32 128 230 251 254 254 254 252 245 217 151 67 22 4 0 0 0 2 18 54 68 40 3 0 0 3 13 | 168 8 0 3 34 132 229 250 254 254 252 244 217 151 72 21 4 1 0 0 2 18 74 119 117 70 9 0 0 3 14 | 175 9 0 2 35 132 228 249 253 250 241 215 156 69 23 5 0 0 0 1 15 77 142 180 162 94 15 0 0 4 15 | 179 11 0 2 34 129 222 246 248 237 212 158 72 22 4 0 0 0 1 12 74 150 207 220 193 116 19 0 0 4 16 | 183 14 0 2 32 119 212 238 235 212 153 74 20 3 0 0 0 1 12 68 149 206 237 240 216 129 24 1 0 6 17 | 185 14 0 2 28 108 194 216 200 147 74 19 2 0 0 0 2 14 66 149 209 238 248 248 227 138 25 1 1 5 18 | 186 14 0 1 23 87 159 177 142 71 23 3 0 0 0 2 16 66 146 212 241 249 252 250 232 144 29 1 0 5 19 | 187 14 0 0 16 63 111 108 67 22 4 0 0 0 3 19 69 143 213 238 249 252 254 251 234 148 31 1 0 5 20 | 190 15 0 0 11 37 56 43 17 3 0 0 0 3 19 73 151 216 240 251 252 253 254 253 234 147 33 1 0 5 21 | 186 12 0 0 4 15 21 10 1 0 0 1 4 21 73 153 210 241 251 253 254 254 254 253 233 145 32 1 0 5 22 | 184 13 0 0 1 3 2 0 0 0 1 7 25 76 154 213 240 252 254 254 254 254 255 252 231 141 30 1 0 5 23 | 184 15 0 0 0 0 0 0 1 2 9 26 78 154 213 242 251 254 254 254 254 254 255 252 229 138 26 1 0 6 24 | 188 14 1 0 0 0 0 0 3 10 30 81 159 218 243 251 253 254 254 254 254 254 254 252 231 138 26 1 0 6 25 | 191 18 2 1 0 0 1 5 14 33 90 163 217 243 251 252 254 254 254 254 254 254 254 252 233 141 26 2 0 8 26 | 201 26 3 1 2 3 5 14 38 94 166 219 246 252 252 253 254 254 254 254 254 254 254 252 237 148 29 3 1 14 27 | 214 48 9 6 5 8 16 41 98 174 224 249 252 254 254 254 255 254 254 254 254 254 254 253 241 163 40 7 5 28 28 | 229 80 22 13 16 23 47 100 181 227 248 253 254 254 254 255 255 254 254 254 254 254 254 253 248 188 68 20 20 54 29 | 243 129 47 33 37 55 109 181 228 247 253 254 255 255 254 255 255 255 254 254 254 254 254 254 250 216 117 53 50 92 30 | 250 186 98 69 73 116 180 229 249 254 254 254 255 255 255 254 255 255 255 254 254 255 255 254 253 236 167 99 91 138 31 | -------------------------------------------------------------------------------- /camera_client/camera.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import time 3 | import urllib2 4 | import cv2 5 | import numpy as np 6 | import os 7 | 8 | UNPROCESSED_FOLDER = 'images_unprocessed' 9 | SUCCESS_FOLDER = 'image_success' 10 | 11 | class ipCamera(object): 12 | 13 | def __init__(self, url, user=None, password=None): 14 | print("INIT IP CAMERA") 15 | self.prevframe = None 16 | self.currframe = None 17 | self.url = url 18 | auth_encoded = base64.encodestring('%s:%s' % (user, password))[:-1] 19 | self.req = urllib2.Request(self.url) 20 | if user != None and password != None: 21 | self.req.add_header('Authorization', 'Basic %s' % auth_encoded) 22 | 23 | def get_frame(self): 24 | bytes = '' 25 | response = urllib2.urlopen(self.req) 26 | done = False 27 | while not done: 28 | bytes+=response.read(1024) 29 | a = bytes.find('\xff\xd8') 30 | b = bytes.find('\xff\xd9') 31 | if a!=-1 and b!=-1: 32 | jpg = bytes[a:b+2] 33 | bytes= bytes[b+2:] 34 | frame = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8),cv2.CV_LOAD_IMAGE_COLOR) 35 | #cv2.imshow('Test Image',frame) 36 | done = True 37 | self._set_prevframe(self.currframe) 38 | self.currframe = frame 39 | return frame 40 | 41 | def _set_prevframe(self,frame): 42 | self.prevframe = frame 43 | -------------------------------------------------------------------------------- /camera_client/main.py: -------------------------------------------------------------------------------- 1 | """ 2 | Standard packadges 3 | """ 4 | import subprocess 5 | import time 6 | import cv2 7 | import numpy as np 8 | import requests 9 | import json 10 | import base64 11 | import datetime 12 | """ 13 | Own Modules 14 | """ 15 | import camera 16 | UNPROCESSED_FOLDER = 'images_unprocessed' 17 | SUCCESS_FOLDER = 'image_success' 18 | CAMERALOCATION = 'PYCONZA2015' 19 | SERVER_LOC = 'http://127.0.0.1:8080' 20 | PUSH_URL = SERVER_LOC +'/pushImage' 21 | cam = camera.ipCamera('http://192.168.1.100/video4.mjpg',None,None) 22 | 23 | while True: 24 | #print("Save file",i) 25 | frame = cam.get_frame() 26 | # cv2.imshow('Test Image',frame) 27 | # cv2.waitKey(5000) 28 | # cv2.destroyAllWindows() 29 | t0 = time.time() 30 | imagename = str(CAMERALOCATION+str(datetime.datetime.now()).replace(" ","_").replace(":","_"))+'.jpeg' 31 | imagelocation = 'images_unprocessed/'+imagename 32 | cv2.imwrite(imagelocation, frame) 33 | 34 | p = subprocess.Popen(["python", "nanpr.py","-i",imagelocation],stdin=subprocess.PIPE,stdout=subprocess.PIPE) 35 | output = p.communicate()[0] 36 | print("Number Plate Found:",output) 37 | if len(output) > 3: 38 | r = requests.post(PUSH_URL,data={'data':json.dumps({'numberplate':output,'camlocation':CAMERALOCATION,'jsondata': base64.b64encode(open(imagelocation, 'rb').read())})}) 39 | print("Time to process: ",time.time()-t0) 40 | time.sleep(15) 41 | #python adaptive_thresholding.py -i test_data/2382709.jpg 42 | 43 | -------------------------------------------------------------------------------- /camera_client/main.py~: -------------------------------------------------------------------------------- 1 | """ 2 | Standard packadges 3 | """ 4 | import subprocess 5 | import time 6 | import cv2 7 | import numpy as np 8 | """ 9 | Own Modules 10 | """ 11 | import camera 12 | UNPROCESSED_FOLDER = 'images_unprocessed' 13 | SUCCESS_FOLDER = 'image_success' 14 | 15 | cam = camera.ipCamera('http://192.168.1.104/video4.mjpg',None,None) 16 | i=0 17 | while True: 18 | #print("Save file",i) 19 | frame = cam.get_frame() 20 | cv2.imshow('Test Image',frame) 21 | cv2.waitKey(1000) 22 | cv2.destroyAllWindows() 23 | if cam.prevframe != None: 24 | pix_diff = np.sum(cam.currframe.astype("float") - cam.prevframe.astype("float"))** 2 25 | pix_diff /= float(cam.currframe.shape[0] * cam.prevframe.shape[1]) 26 | else: 27 | pix_diff = 10**10 28 | if pix_diff > 10**6: 29 | t0 = time.time() 30 | imagename = str(i)+'.jpeg' 31 | imagelocation = 'images_unprocessed/'+imagename 32 | cv2.imwrite(imagelocation, frame) 33 | 34 | #p = subprocess.Popen(["python", "adaptive_thresholding.py","-i",imagelocation],stdin=subprocess.PIPE,stdout=subprocess.PIPE) 35 | #output = p.communicate()[0] 36 | #print (output) 37 | print("Time to process: ",time.time()-t0) 38 | i+=1 39 | #python adaptive_thresholding.py -i test_data/2382709.jpg 40 | 41 | -------------------------------------------------------------------------------- /camera_client/nanpr.py: -------------------------------------------------------------------------------- 1 | #/usr/bin/python 2 | 3 | import argparse 4 | import glob 5 | import math 6 | import cv2 7 | import numpy as np 8 | from skimage.measure import structural_similarity as ssim 9 | from skimage.filter import threshold_adaptive 10 | from pyfann import libfann 11 | 12 | import itertools 13 | import operator 14 | 15 | def most_common(L): 16 | # get an iterable of (item, iterable) pairs 17 | SL = sorted((x, i) for i, x in enumerate(L)) 18 | # print 'SL:', SL 19 | groups = itertools.groupby(SL, key=operator.itemgetter(0)) 20 | # auxiliary function to get "quality" for an item 21 | def _auxfun(g): 22 | item, iterable = g 23 | count = 0 24 | min_index = len(L) 25 | for _, where in iterable: 26 | count += 1 27 | min_index = min(min_index, where) 28 | # print 'item %r, count %r, minind %r' % (item, count, min_index) 29 | return count, -min_index 30 | # pick the highest-count/earliest item 31 | return max(groups, key=_auxfun)[0] 32 | 33 | #NOTE: Stolen from pyimagesearch, check out Adrian's tutorials and examples 34 | 35 | def mse(imageA, imageB): 36 | # the 'Mean Squared Error' between the two images is the 37 | # sum of the squared difference between the two images; 38 | # NOTE: the two images must have the same dimension 39 | err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2) 40 | err /= float(imageA.shape[0] * imageA.shape[1]) 41 | # return the MSE, the lower the error, the more "similar" 42 | # the two images are 43 | return err 44 | 45 | 46 | def order_points(pts): 47 | # initialzie a list of coordinates that will be ordered 48 | # such that the first entry in the list is the top-left, 49 | # the second entry is the top-right, the third is the 50 | # bottom-right, and the fourth is the bottom-left 51 | rect = np.zeros((4, 2), dtype = "float32") 52 | 53 | # the top-left point will have the smallest sum, whereas 54 | # the bottom-right point will have the largest sum 55 | s = pts.sum(axis = 1) 56 | rect[0] = pts[np.argmin(s)] 57 | rect[2] = pts[np.argmax(s)] 58 | 59 | # now, compute the difference between the points, the 60 | # top-right point will have the smallest difference, 61 | # whereas the bottom-left will have the largest difference 62 | diff = np.diff(pts, axis = 1) 63 | rect[1] = pts[np.argmin(diff)] 64 | rect[3] = pts[np.argmax(diff)] 65 | 66 | # return the ordered coordinates 67 | return rect 68 | 69 | def four_point_transform(image, pts): 70 | # obtain a consistent order of the points and unpack them 71 | # individually 72 | rect = order_points(pts) 73 | (tl, tr, br, bl) = rect 74 | 75 | # compute the width of the new image, which will be the 76 | # maximum distance between bottom-right and bottom-left 77 | # x-coordiates or the top-right and top-left x-coordinates 78 | widthA = np.sqrt(((br[0] - bl[0]) ** 2) + ((br[1] - bl[1]) ** 2)) 79 | widthB = np.sqrt(((tr[0] - tl[0]) ** 2) + ((tr[1] - tl[1]) ** 2)) 80 | maxWidth = max(int(widthA), int(widthB)) 81 | 82 | # compute the height of the new image, which will be the 83 | # maximum distance between the top-right and bottom-right 84 | # y-coordinates or the top-left and bottom-left y-coordinates 85 | heightA = np.sqrt(((tr[0] - br[0]) ** 2) + ((tr[1] - br[1]) ** 2)) 86 | heightB = np.sqrt(((tl[0] - bl[0]) ** 2) + ((tl[1] - bl[1]) ** 2)) 87 | maxHeight = max(int(heightA), int(heightB)) 88 | 89 | # now that we have the dimensions of the new image, construct 90 | # the set of destination points to obtain a "birds eye view", 91 | # (i.e. top-down view) of the image, again specifying points 92 | # in the top-left, top-right, bottom-right, and bottom-left 93 | # order 94 | dst = np.array([ 95 | [0, 0], 96 | [maxWidth - 1, 0], 97 | [maxWidth - 1, maxHeight - 1], 98 | [0, maxHeight - 1]], dtype = "float32") 99 | 100 | # compute the perspective transform matrix and then apply it 101 | M = cv2.getPerspectiveTransform(rect, dst) 102 | warped = cv2.warpPerspective(image, M, (maxWidth, maxHeight)) 103 | 104 | # return the warped image 105 | return warped 106 | 107 | 108 | #NOTE: My own quick and dirty attempt at letter classification 109 | 110 | img_set = {} 111 | for fn in glob.glob("Averages/*.png"): 112 | img_set[fn.split(".")[0][-1]] = cv2.cvtColor(cv2.imread(fn), cv2.COLOR_BGR2GRAY) 113 | 114 | def match_against_average_chars(img): 115 | resultset = {} 116 | # I am sure there is a better way, but this number should be bigger than any MSE 117 | minval = 9999999999999 118 | minchar = '-' 119 | for char in img_set: 120 | resultset[char] = mse(img, img_set[char]) 121 | if resultset[char] char[0]: 210 | region.append(char) 211 | placed_char = True 212 | break 213 | # if char was not placed in a group, it becomes the first of a new group 214 | if placed_char is False: 215 | self.possible_plate_regions.append([char]) 216 | 217 | # Now remove chars from regions if heights differ significantly, as numberplate chars are evenly sized. This could possibly be done in above filter, but this seemed better 218 | self.possible_plate_regions_ave_filtered = [] 219 | 220 | for region in self.possible_plate_regions: 221 | if len(region)>2: 222 | self.possible_plate_regions_ave_filtered.append([]) 223 | ave = sum([char[3] for char in region])/len(region) 224 | for char in region: 225 | if ave/self.config["h_ave_diff"] < char[3] < ave*self.config["h_ave_diff"]: 226 | self.possible_plate_regions_ave_filtered[-1].append(char) 227 | 228 | # Now filter char regions on count 229 | self.possible_plate_regions_ave_filtered = [x for x in self.possible_plate_regions_ave_filtered if len(x)>2] 230 | 231 | possible_plate_regions_plate_details = [] 232 | 233 | for region in self.possible_plate_regions_ave_filtered: 234 | # Find the min and max values of the plate region 235 | xmin = min([x[0] for x in region]) 236 | ymin = min([x[1] for x in region]) 237 | xmax = max([x[0]+x[2] for x in region]) 238 | ymax = max([x[1]+x[3] for x in region]) 239 | topleft = sorted(region, key=lambda x: x[0]+x[1])[0] 240 | topright = sorted(region, key=lambda x: -(x[0]+x[2])+x[1])[0] 241 | botleft = sorted(region, key=lambda x: x[0]-(x[1]+x[3]))[0] 242 | botright = sorted(region, key=lambda x: -(x[0]+x[2])-(x[1]+x[3]))[0] 243 | 244 | #print (topleft, topright, botleft, botright) 245 | 246 | mtop = 1.0*(topleft[1]-topright[1])/(topleft[0]-(topright[0]+topright[2])) 247 | mbot = 1.0*(botleft[1]+botleft[3]-(botright[1]+botright[3]))/(botleft[0]-(botright[0]+botright[2])) 248 | #print mtop, mbot 249 | if self.debug: 250 | for char in region: 251 | (x, y, w, h) = char 252 | cv2.rectangle(self.roiblobs, (x, y), (x + w, y + h), (0, 0, 255), 1) 253 | 254 | possible_plate_regions_plate_details.append({"size": (xmin, ymin, xmax, ymax), 255 | "roi": (xmin - 2*self.config["w_max"], ymin - self.config["h_max"], xmax + 2*self.config["w_max"], ymax + self.config["h_max"]), 256 | "average_angle": (mtop + mbot)/2.0}) 257 | # Get area plus 2 x max char width to the sides and max char height above and below 258 | try: 259 | self.skew_correct(possible_plate_regions_plate_details[-1]) 260 | 261 | # use thresholded roi to find chars again 262 | if "warped2" in possible_plate_regions_plate_details[-1] and possible_plate_regions_plate_details[-1]["warped2"] is not None: 263 | self.detect_chars(possible_plate_regions_plate_details[-1]) 264 | if len(possible_plate_regions_plate_details[-1]["plate"])>3: 265 | possible_plate_regions_plate_details[-1]["somechars"] = True 266 | except Exception as ex: 267 | print ex 268 | 269 | self.plates = possible_plate_regions_plate_details 270 | return self.plates 271 | 272 | def detect_chars(self, plate_detail): 273 | (cnts, _) = cv2.findContours(plate_detail["warped2"].copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 274 | # loop over the contours 275 | plate_detail["plate"] = "" 276 | plate_detail["chars"] = [] 277 | #plate_detail["char_image"] = [] 278 | #plate_detail["char_image_scaled"] = [] 279 | #plate_detail["char_image_scaled"] = [] 280 | sorted_char_list = sorted([cv2.boundingRect(c) for c in cnts], key=lambda x: x[0]) 281 | short_sorted_char_list = [] 282 | for (x, y, w, h) in sorted_char_list: 283 | if self.config["w_min"] < w < self.config["w_max"] and self.config["h_min"] < h < self.config["h_max"] and self.config["hw_min"] < 1.0*h/w < self.config["hw_max"]: 284 | short_sorted_char_list.append((x, y, w, h)) 285 | #ave = sum([char[3] for char in short_sorted_char_list])/len(short_sorted_char_list) 286 | #mseval = [abs(sum([(char[3]-outer[3]) for char in short_sorted_char_list])) for outer in short_sorted_char_list] 287 | ave = most_common([bla[3] for bla in short_sorted_char_list]) #[mseval.index(min(mseval))][3] 288 | #print [bla[3] for bla in short_sorted_char_list] 289 | #print ave 290 | #miny = min([char[1] for char in short_sorted_char_list])/len(short_sorted_char_list) 291 | #maxh = max([char[3] for char in short_sorted_char_list])/len(short_sorted_char_list) 292 | for (x, y, w, h) in short_sorted_char_list: 293 | if ave/self.config["h_ave_diff"] < h < ave*self.config["h_ave_diff"]: 294 | character = plate_detail["warped"][y-1:y + h+1, x:x + w].copy() 295 | chardict = {} 296 | chardict["char_image"] = character 297 | resized = cv2.resize(character, (30, 30), interpolation=cv2.INTER_CUBIC)#cv2.equalizeHist(cv2.resize(character, (30, 30), interpolation=cv2.INTER_CUBIC)) 298 | chardict["char_image_scaled"] = resized 299 | 300 | chardict["text"], chardict["match_result_dict"] = match_with_neural_net(resized) 301 | if chardict["text"] == 'Q': 302 | chardict["ave_text"], chardict["ave_match_result_dict"] = match_against_average_chars(resized) 303 | plate_detail["plate"] += chardict["ave_text"] 304 | #print "AVE GEBRUIK", plate_detail["plate"] 305 | else: 306 | #print chardict["text"] 307 | plate_detail["plate"] += chardict["text"] 308 | plate_detail["chars"].append(chardict) 309 | #else: 310 | #print "discard op ave", (x, y, w, h) 311 | 312 | def skew_correct(self, plate_detail, chars=None): 313 | (xmin, ymin, xmax, ymax) = plate_detail["size"] 314 | if True: 315 | # rotate our roiblobs 316 | plateregion = self.image[ymin - self.config["h_max"]:ymax + self.config["h_max"], xmin - 2*self.config["w_max"]:xmax + 2*self.config["w_max"]].copy() 317 | (h, w) = plateregion.shape[:2] 318 | (cX, cY) = (w / 2, h / 2) 319 | degrees = math.atan(plate_detail["average_angle"]) * 180 / math.pi 320 | #print degrees 321 | #rotate_deg = - atan(((*glob_charlys_lys_it).m1+(*glob_charlys_lys_it).m2)/2.0) * 180.0 / 3.14159265; 322 | #degrees = 0 # som om die gemiddelde M te kry en dan skakel ons dit om na degree 323 | M = cv2.getRotationMatrix2D((cX, cY), degrees, 1.0) 324 | rotated = cv2.warpAffine(plateregion, M, (w, h)) 325 | #cv2.imshow("Rotated by xx Degrees", rotated) 326 | #cv2.waitKey(0) 327 | plate_detail["warped"] = rotated 328 | warped2 = cv2.adaptiveThreshold(rotated, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, self.config["thesh_window"], self.config["thesh_offset"]) 329 | plate_detail["warped2"] = warped2 330 | #TODO: Rotate eerder as correct 331 | else: 332 | plate_detail["plate"] = "" 333 | plateregion = self.image[ymin - self.config["h_max"]:ymax + self.config["h_max"], xmin - 2*self.config["w_max"]:xmax + 2*self.config["w_max"]].copy() 334 | if self.debug: 335 | cv2.rectangle(self.roiblobs, (xmin - 2*self.config["w_max"], ymin - self.config["h_max"]), (xmax + 2*self.config["w_max"], ymax + self.config["h_max"]), (255, 0, 0), 1) 336 | #gray = plateregion#cv2.cvtColor(plateregion, cv2.COLOR_BGR2GRAY) 337 | gray = cv2.GaussianBlur(plateregion, (5, 5), 0) 338 | edged = cv2.Canny(gray, 25, 250) 339 | #edged = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 25, thesh_offset) 340 | (cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 341 | cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:10] 342 | screenCnt = None 343 | plate_detail["edged"] = edged 344 | # find contours, stolen from pyimagesearch 345 | for c in cnts: 346 | # approximate the contour 347 | peri = cv2.arcLength(c, True) 348 | approx = cv2.approxPolyDP(c, 0.02 * peri, True) 349 | 350 | cv2.drawContours(plateregion, [approx], -1, (0, 0, 0), 1) 351 | if len(approx) == 4: 352 | screenCnt = approx 353 | break 354 | plate_detail["screenCnt"] = screenCnt 355 | if plate_detail["screenCnt"] is not None: 356 | warped = four_point_transform(plateregion, screenCnt.reshape(4, 2) * 1) 357 | #cv2.imshow("warped2", warped) 358 | #cv2.waitKey(0) 359 | warped2 = cv2.adaptiveThreshold(warped, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, self.config["thesh_window"], self.config["thesh_offset"]) 360 | plate_detail["warped"] = warped 361 | plate_detail["warped2"] = warped2 362 | return plate_detail 363 | 364 | 365 | if __name__ == "__main__": 366 | # construct the argument parser and parse the arguments 367 | ap = argparse.ArgumentParser() 368 | ap.add_argument("-i", "--image", required=False, help="Path to the image") 369 | ap.add_argument("-c", "--csv", required=False, help="File with CSV test data") 370 | ap.add_argument("-d", "--debug", required=False, help="Show images set to True") 371 | args = vars(ap.parse_args()) 372 | if args["image"]: 373 | image = cv2.imread(args["image"]) 374 | ob = Detector(debug=True if args["debug"] == "True" else False) 375 | 376 | retval = ob.detect_plates(image=image) 377 | print " ".join([x["plate"] if "plate" in x else "" for x in retval]) 378 | if args["debug"] == "True": 379 | cv2.imshow("Blobs ALL", ob.allblobs) 380 | cv2.imshow("Blobs size filter", ob.reducedblobs) 381 | cv2.imshow("Blobs group filtered", ob.roiblobs) 382 | cv2.waitKey(0) 383 | for detail in retval: 384 | print "PLATE:", detail["plate"] if "plate" in detail else "" 385 | if "edge" in detail: 386 | cv2.imshow("edged"+detail["plate"], detail["edged"]) 387 | if "warped" in detail: 388 | cv2.imshow("warped"+detail["plate"], detail["warped"]) 389 | if "warped2" in detail: 390 | cv2.imshow("warped2"+detail["plate"], detail["warped2"]) 391 | cv2.waitKey(0) 392 | else: 393 | # testdata with images 394 | if "csv" in args and args["csv"]: 395 | csv = [x.split(",") for x in open(args["csv"]).readlines()] 396 | ob = Detector(debug=True) 397 | hit = 0 398 | cnt = 0 399 | for line in csv: 400 | image = cv2.imread("test_data/%s.jpg"%(line[0])) 401 | #ob.detect_plates(image=image) 402 | try: 403 | retval = ob.detect_plates(image=image) 404 | cnt += 1 405 | if line[2] in [x["plate"] for x in retval]: 406 | hit += 1 407 | print "hit:", line[0], line[2], " ".join([x["plate"] for x in retval]) 408 | print "CNT", cnt, hit 409 | cv2.imwrite(line[0] + line[2] + ".jpg",image ) 410 | cv2.imwrite(line[0] + line[2] + "_all_blob.jpg", ob.allblobs) 411 | cv2.imwrite(line[0] + line[2] + "_reduced_blob.jpg", ob.reducedblobs) 412 | cv2.imwrite(line[0] + line[2] + "_roi_blob.jpg", ob.roiblobs) 413 | #else: 414 | #print "mis:", line[0], line[2], " ".join([x["plate"] for x in retval]) 415 | except: 416 | print "misex:", line[0] 417 | #cv2.imshow("Blobs ALL", ob.allblobs) 418 | #cv2.imshow("Blobs size filter", ob.reducedblobs) 419 | #cv2.imshow("Blobs group filtered", ob.roiblobs) 420 | #cv2.waitKey(0) 421 | if args["debug"] == "True": 422 | for detail in retval: 423 | print detail["plate"] if "plate" in detail else "" 424 | #if "edge" in detail: 425 | #cv2.imshow("edged"+detail["plate"], detail["edged"]) 426 | if "warped" in detail: 427 | cv2.imshow("warped"+detail["plate"], detail["warped"]) 428 | #if "warped2" in detail: 429 | #cv2.imshow("warped2"+detail["plate"], detail["warped2"]) 430 | cv2.imshow("Blobs group filtered", ob.roiblobs) 431 | cv2.waitKey(0) 432 | print "total:", 100.0*hit/len(csv) 433 | 434 | 435 | 436 | 437 | 438 | 439 | -------------------------------------------------------------------------------- /camera_client/test_data/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/test_data/1.jpg -------------------------------------------------------------------------------- /camera_client/test_data/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/test_data/2.jpg -------------------------------------------------------------------------------- /camera_client/test_data/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/test_data/3.jpg -------------------------------------------------------------------------------- /camera_client/test_data/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/test_data/4.jpg -------------------------------------------------------------------------------- /camera_client/test_data/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/test_data/5.jpg -------------------------------------------------------------------------------- /camera_client/test_data/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/camera_client/test_data/6.jpg -------------------------------------------------------------------------------- /camera_client/tophat.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | SHOWTIME = 2000 # Time to show images 5 | 6 | img = cv2.imread('test_data/2.jpg',0) 7 | kernel = np.ones((5,5),np.uint8) 8 | # Erode thin lines 9 | erosion = cv2.erode(img,kernel,iterations = 1) 10 | cv2.imshow('Erode',erosion) 11 | cv2.waitKey(SHOWTIME) 12 | cv2.destroyAllWindows() 13 | # Dilation thick lines 14 | dilation = cv2.dilate(img,kernel,iterations = 1) 15 | cv2.imshow('Dilation',dilation) 16 | cv2.waitKey(SHOWTIME) 17 | cv2.destroyAllWindows() 18 | # opening - erosion followed by dilation 19 | opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) 20 | cv2.imshow('opening',opening) 21 | cv2.waitKey(SHOWTIME) 22 | cv2.destroyAllWindows() 23 | # Closing - Dilation followed by Erosion 24 | closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) 25 | cv2.imshow('Closing',closing) 26 | cv2.waitKey(SHOWTIME) 27 | cv2.destroyAllWindows() 28 | # Morhplogy gradient 29 | gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel) 30 | cv2.imshow('gradient',gradient) 31 | cv2.waitKey(SHOWTIME) 32 | cv2.destroyAllWindows() 33 | #top hat -It is the difference between input image and Opening of the image 34 | tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel) 35 | cv2.imshow('tophat',tophat) 36 | cv2.waitKey(SHOWTIME) 37 | cv2.destroyAllWindows() 38 | #blackhat - It is the difference between the closing of the input image and input image. 39 | blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel) 40 | cv2.imshow('Balchat',tophat) 41 | cv2.waitKey(SHOWTIME) 42 | cv2.destroyAllWindows() 43 | -------------------------------------------------------------------------------- /camera_client/tophat.py~: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | SHOWTIME = 2000 # Time to show images 5 | 6 | img = cv2.imread('test_data/2.jpg',0) 7 | kernel = np.ones((5,5),np.uint8) 8 | # Erode thin lines 9 | erosion = cv2.erode(img,kernel,iterations = 1) 10 | cv2.imshow('Erode',erosion) 11 | cv2.waitKey(SHOWTIME) 12 | cv2.destroyAllWindows() 13 | # Dilation thick lines 14 | dilation = cv2.dilate(img,kernel,iterations = 1) 15 | cv2.imshow('Dilation',dilation) 16 | cv2.waitKey(SHOWTIME) 17 | cv2.destroyAllWindows() 18 | # opening - erosion followed by dilation 19 | opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) 20 | cv2.imshow('opening',opening) 21 | cv2.waitKey(SHOWTIME) 22 | cv2.destroyAllWindows() 23 | # Closing - Dilation followed by Erosion 24 | closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) 25 | cv2.imshow('Closing',closing) 26 | cv2.waitKey(SHOWTIME) 27 | cv2.destroyAllWindows() 28 | # Morhplogy gradient 29 | gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel) 30 | cv2.imshow('gradient',gradient) 31 | cv2.waitKey(SHOWTIME) 32 | cv2.destroyAllWindows() 33 | #top hat -It is the difference between input image and Opening of the image 34 | tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel) 35 | cv2.imshow('tophat',tophat) 36 | cv2.waitKey(SHOWTIME) 37 | cv2.destroyAllWindows() 38 | #blackhat - It is the difference between the closing of the input image and input image. 39 | blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel) 40 | cv2.imshow('tophat',tophat) 41 | cv2.waitKey(SHOWTIME) 42 | cv2.destroyAllWindows() 43 | -------------------------------------------------------------------------------- /db/ANPR.db: -------------------------------------------------------------------------------- 1 | -- 2 | -- PostgreSQL database dump 3 | -- 4 | 5 | SET statement_timeout = 0; 6 | SET lock_timeout = 0; 7 | SET client_encoding = 'UTF8'; 8 | SET standard_conforming_strings = on; 9 | SET check_function_bodies = false; 10 | SET client_min_messages = warning; 11 | 12 | -- 13 | -- Name: anpr; Type: SCHEMA; Schema: -; Owner: postgres 14 | -- 15 | 16 | CREATE SCHEMA anpr; 17 | 18 | 19 | ALTER SCHEMA anpr OWNER TO postgres; 20 | 21 | -- 22 | -- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: 23 | -- 24 | 25 | CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; 26 | 27 | 28 | -- 29 | -- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: 30 | -- 31 | 32 | COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; 33 | 34 | 35 | SET search_path = anpr, pg_catalog; 36 | 37 | SET default_tablespace = ''; 38 | 39 | SET default_with_oids = false; 40 | 41 | -- 42 | -- Name: numberplates; Type: TABLE; Schema: anpr; Owner: postgres; Tablespace: 43 | -- 44 | 45 | CREATE TABLE numberplates ( 46 | id bigint NOT NULL, 47 | numberplate text, 48 | jsondata json, 49 | time_received timestamp without time zone, 50 | camlocation text 51 | ); 52 | 53 | 54 | ALTER TABLE numberplates OWNER TO postgres; 55 | 56 | -- 57 | -- Name: numberplates_id_seq; Type: SEQUENCE; Schema: anpr; Owner: postgres 58 | -- 59 | 60 | CREATE SEQUENCE numberplates_id_seq 61 | START WITH 1 62 | INCREMENT BY 1 63 | NO MINVALUE 64 | NO MAXVALUE 65 | CACHE 1; 66 | 67 | 68 | ALTER TABLE numberplates_id_seq OWNER TO postgres; 69 | 70 | -- 71 | -- Name: numberplates_id_seq; Type: SEQUENCE OWNED BY; Schema: anpr; Owner: postgres 72 | -- 73 | 74 | ALTER SEQUENCE numberplates_id_seq OWNED BY numberplates.id; 75 | 76 | 77 | -- 78 | -- Name: user; Type: TABLE; Schema: anpr; Owner: postgres; Tablespace: 79 | -- 80 | 81 | CREATE TABLE "user" ( 82 | id bigint NOT NULL, 83 | username text, 84 | password text 85 | ); 86 | 87 | 88 | ALTER TABLE "user" OWNER TO postgres; 89 | 90 | -- 91 | -- Name: user_id_seq; Type: SEQUENCE; Schema: anpr; Owner: postgres 92 | -- 93 | 94 | CREATE SEQUENCE user_id_seq 95 | START WITH 1 96 | INCREMENT BY 1 97 | NO MINVALUE 98 | NO MAXVALUE 99 | CACHE 1; 100 | 101 | 102 | ALTER TABLE user_id_seq OWNER TO postgres; 103 | 104 | -- 105 | -- Name: user_id_seq; Type: SEQUENCE OWNED BY; Schema: anpr; Owner: postgres 106 | -- 107 | 108 | ALTER SEQUENCE user_id_seq OWNED BY "user".id; 109 | 110 | 111 | -- 112 | -- Name: id; Type: DEFAULT; Schema: anpr; Owner: postgres 113 | -- 114 | 115 | ALTER TABLE ONLY numberplates ALTER COLUMN id SET DEFAULT nextval('numberplates_id_seq'::regclass); 116 | 117 | 118 | -- 119 | -- Name: id; Type: DEFAULT; Schema: anpr; Owner: postgres 120 | -- 121 | 122 | ALTER TABLE ONLY "user" ALTER COLUMN id SET DEFAULT nextval('user_id_seq'::regclass); 123 | 124 | 125 | -- 126 | -- Data for Name: numberplates; Type: TABLE DATA; Schema: anpr; Owner: postgres 127 | -- 128 | 129 | COPY numberplates (id, numberplate, jsondata, time_received, camlocation) FROM stdin; 130 | \. 131 | 132 | 133 | -- 134 | -- Name: numberplates_id_seq; Type: SEQUENCE SET; Schema: anpr; Owner: postgres 135 | -- 136 | 137 | SELECT pg_catalog.setval('numberplates_id_seq', 1, false); 138 | 139 | 140 | -- 141 | -- Data for Name: user; Type: TABLE DATA; Schema: anpr; Owner: postgres 142 | -- 143 | 144 | COPY "user" (id, username, password) FROM stdin; 145 | 1 admin 104fe7e2c8c8891e34cde5ae78fdc6e0b8991a8972c86e95d23c31b4d500bde0 146 | \. 147 | 148 | 149 | -- 150 | -- Name: user_id_seq; Type: SEQUENCE SET; Schema: anpr; Owner: postgres 151 | -- 152 | 153 | SELECT pg_catalog.setval('user_id_seq', 1, true); 154 | 155 | 156 | -- 157 | -- Name: numberplates_pkey; Type: CONSTRAINT; Schema: anpr; Owner: postgres; Tablespace: 158 | -- 159 | 160 | ALTER TABLE ONLY numberplates 161 | ADD CONSTRAINT numberplates_pkey PRIMARY KEY (id); 162 | 163 | 164 | -- 165 | -- Name: user_pkey; Type: CONSTRAINT; Schema: anpr; Owner: postgres; Tablespace: 166 | -- 167 | 168 | ALTER TABLE ONLY "user" 169 | ADD CONSTRAINT user_pkey PRIMARY KEY (id); 170 | 171 | 172 | -- 173 | -- Name: user_username_key; Type: CONSTRAINT; Schema: anpr; Owner: postgres; Tablespace: 174 | -- 175 | 176 | ALTER TABLE ONLY "user" 177 | ADD CONSTRAINT user_username_key UNIQUE (username); 178 | 179 | 180 | -- 181 | -- Name: public; Type: ACL; Schema: -; Owner: postgres 182 | -- 183 | 184 | REVOKE ALL ON SCHEMA public FROM PUBLIC; 185 | REVOKE ALL ON SCHEMA public FROM postgres; 186 | GRANT ALL ON SCHEMA public TO postgres; 187 | GRANT ALL ON SCHEMA public TO PUBLIC; 188 | 189 | 190 | -- 191 | -- PostgreSQL database dump complete 192 | -- 193 | 194 | -------------------------------------------------------------------------------- /nanpr.py: -------------------------------------------------------------------------------- 1 | #/usr/bin/python 2 | 3 | import argparse 4 | import glob 5 | import math 6 | import cv2 7 | import numpy as np 8 | from skimage.measure import structural_similarity as ssim 9 | from skimage.filter import threshold_adaptive 10 | from pyfann import libfann 11 | 12 | import itertools 13 | import operator 14 | 15 | def most_common(L): 16 | # get an iterable of (item, iterable) pairs 17 | SL = sorted((x, i) for i, x in enumerate(L)) 18 | # print 'SL:', SL 19 | groups = itertools.groupby(SL, key=operator.itemgetter(0)) 20 | # auxiliary function to get "quality" for an item 21 | def _auxfun(g): 22 | item, iterable = g 23 | count = 0 24 | min_index = len(L) 25 | for _, where in iterable: 26 | count += 1 27 | min_index = min(min_index, where) 28 | # print 'item %r, count %r, minind %r' % (item, count, min_index) 29 | return count, -min_index 30 | # pick the highest-count/earliest item 31 | return max(groups, key=_auxfun)[0] 32 | 33 | #NOTE: Stolen from pyimagesearch, check out Adrian's tutorials and examples 34 | 35 | def mse(imageA, imageB): 36 | # the 'Mean Squared Error' between the two images is the 37 | # sum of the squared difference between the two images; 38 | # NOTE: the two images must have the same dimension 39 | err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2) 40 | err /= float(imageA.shape[0] * imageA.shape[1]) 41 | # return the MSE, the lower the error, the more "similar" 42 | # the two images are 43 | return err 44 | 45 | 46 | def order_points(pts): 47 | # initialzie a list of coordinates that will be ordered 48 | # such that the first entry in the list is the top-left, 49 | # the second entry is the top-right, the third is the 50 | # bottom-right, and the fourth is the bottom-left 51 | rect = np.zeros((4, 2), dtype = "float32") 52 | 53 | # the top-left point will have the smallest sum, whereas 54 | # the bottom-right point will have the largest sum 55 | s = pts.sum(axis = 1) 56 | rect[0] = pts[np.argmin(s)] 57 | rect[2] = pts[np.argmax(s)] 58 | 59 | # now, compute the difference between the points, the 60 | # top-right point will have the smallest difference, 61 | # whereas the bottom-left will have the largest difference 62 | diff = np.diff(pts, axis = 1) 63 | rect[1] = pts[np.argmin(diff)] 64 | rect[3] = pts[np.argmax(diff)] 65 | 66 | # return the ordered coordinates 67 | return rect 68 | 69 | def four_point_transform(image, pts): 70 | # obtain a consistent order of the points and unpack them 71 | # individually 72 | rect = order_points(pts) 73 | (tl, tr, br, bl) = rect 74 | 75 | # compute the width of the new image, which will be the 76 | # maximum distance between bottom-right and bottom-left 77 | # x-coordiates or the top-right and top-left x-coordinates 78 | widthA = np.sqrt(((br[0] - bl[0]) ** 2) + ((br[1] - bl[1]) ** 2)) 79 | widthB = np.sqrt(((tr[0] - tl[0]) ** 2) + ((tr[1] - tl[1]) ** 2)) 80 | maxWidth = max(int(widthA), int(widthB)) 81 | 82 | # compute the height of the new image, which will be the 83 | # maximum distance between the top-right and bottom-right 84 | # y-coordinates or the top-left and bottom-left y-coordinates 85 | heightA = np.sqrt(((tr[0] - br[0]) ** 2) + ((tr[1] - br[1]) ** 2)) 86 | heightB = np.sqrt(((tl[0] - bl[0]) ** 2) + ((tl[1] - bl[1]) ** 2)) 87 | maxHeight = max(int(heightA), int(heightB)) 88 | 89 | # now that we have the dimensions of the new image, construct 90 | # the set of destination points to obtain a "birds eye view", 91 | # (i.e. top-down view) of the image, again specifying points 92 | # in the top-left, top-right, bottom-right, and bottom-left 93 | # order 94 | dst = np.array([ 95 | [0, 0], 96 | [maxWidth - 1, 0], 97 | [maxWidth - 1, maxHeight - 1], 98 | [0, maxHeight - 1]], dtype = "float32") 99 | 100 | # compute the perspective transform matrix and then apply it 101 | M = cv2.getPerspectiveTransform(rect, dst) 102 | warped = cv2.warpPerspective(image, M, (maxWidth, maxHeight)) 103 | 104 | # return the warped image 105 | return warped 106 | 107 | 108 | #NOTE: My own quick and dirty attempt at letter classification 109 | 110 | img_set = {} 111 | for fn in glob.glob("Averages/*.png"): 112 | img_set[fn.split(".")[0][-1]] = cv2.cvtColor(cv2.imread(fn), cv2.COLOR_BGR2GRAY) 113 | 114 | def match_against_average_chars(img): 115 | resultset = {} 116 | # I am sure there is a better way, but this number should be bigger than any MSE 117 | minval = 9999999999999 118 | minchar = '-' 119 | for char in img_set: 120 | resultset[char] = mse(img, img_set[char]) 121 | if resultset[char] char[0]: 210 | region.append(char) 211 | placed_char = True 212 | break 213 | # if char was not placed in a group, it becomes the first of a new group 214 | if placed_char is False: 215 | self.possible_plate_regions.append([char]) 216 | 217 | # Now remove chars from regions if heights differ significantly, as numberplate chars are evenly sized. This could possibly be done in above filter, but this seemed better 218 | self.possible_plate_regions_ave_filtered = [] 219 | 220 | for region in self.possible_plate_regions: 221 | if len(region)>2: 222 | self.possible_plate_regions_ave_filtered.append([]) 223 | ave = sum([char[3] for char in region])/len(region) 224 | for char in region: 225 | if ave/self.config["h_ave_diff"] < char[3] < ave*self.config["h_ave_diff"]: 226 | self.possible_plate_regions_ave_filtered[-1].append(char) 227 | 228 | # Now filter char regions on count 229 | self.possible_plate_regions_ave_filtered = [x for x in self.possible_plate_regions_ave_filtered if len(x)>2] 230 | 231 | possible_plate_regions_plate_details = [] 232 | 233 | for region in self.possible_plate_regions_ave_filtered: 234 | # Find the min and max values of the plate region 235 | xmin = min([x[0] for x in region]) 236 | ymin = min([x[1] for x in region]) 237 | xmax = max([x[0]+x[2] for x in region]) 238 | ymax = max([x[1]+x[3] for x in region]) 239 | topleft = sorted(region, key=lambda x: x[0]+x[1])[0] 240 | topright = sorted(region, key=lambda x: -(x[0]+x[2])+x[1])[0] 241 | botleft = sorted(region, key=lambda x: x[0]-(x[1]+x[3]))[0] 242 | botright = sorted(region, key=lambda x: -(x[0]+x[2])-(x[1]+x[3]))[0] 243 | 244 | #print (topleft, topright, botleft, botright) 245 | 246 | mtop = 1.0*(topleft[1]-topright[1])/(topleft[0]-(topright[0]+topright[2])) 247 | mbot = 1.0*(botleft[1]+botleft[3]-(botright[1]+botright[3]))/(botleft[0]-(botright[0]+botright[2])) 248 | #print mtop, mbot 249 | if self.debug: 250 | for char in region: 251 | (x, y, w, h) = char 252 | cv2.rectangle(self.roiblobs, (x, y), (x + w, y + h), (0, 0, 255), 1) 253 | 254 | possible_plate_regions_plate_details.append({"size": (xmin, ymin, xmax, ymax), 255 | "roi": (xmin - 2*self.config["w_max"], ymin - self.config["h_max"], xmax + 2*self.config["w_max"], ymax + self.config["h_max"]), 256 | "average_angle": (mtop + mbot)/2.0}) 257 | # Get area plus 2 x max char width to the sides and max char height above and below 258 | try: 259 | self.skew_correct(possible_plate_regions_plate_details[-1]) 260 | 261 | # use thresholded roi to find chars again 262 | if "warped2" in possible_plate_regions_plate_details[-1] and possible_plate_regions_plate_details[-1]["warped2"] is not None: 263 | self.detect_chars(possible_plate_regions_plate_details[-1]) 264 | if len(possible_plate_regions_plate_details[-1]["plate"])>3: 265 | possible_plate_regions_plate_details[-1]["somechars"] = True 266 | except Exception as ex: 267 | print ex 268 | 269 | self.plates = possible_plate_regions_plate_details 270 | return self.plates 271 | 272 | def detect_chars(self, plate_detail): 273 | (cnts, _) = cv2.findContours(plate_detail["warped2"].copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 274 | # loop over the contours 275 | plate_detail["plate"] = "" 276 | plate_detail["chars"] = [] 277 | #plate_detail["char_image"] = [] 278 | #plate_detail["char_image_scaled"] = [] 279 | #plate_detail["char_image_scaled"] = [] 280 | sorted_char_list = sorted([cv2.boundingRect(c) for c in cnts], key=lambda x: x[0]) 281 | short_sorted_char_list = [] 282 | for (x, y, w, h) in sorted_char_list: 283 | if self.config["w_min"] < w < self.config["w_max"] and self.config["h_min"] < h < self.config["h_max"] and self.config["hw_min"] < 1.0*h/w < self.config["hw_max"]: 284 | short_sorted_char_list.append((x, y, w, h)) 285 | #ave = sum([char[3] for char in short_sorted_char_list])/len(short_sorted_char_list) 286 | #mseval = [abs(sum([(char[3]-outer[3]) for char in short_sorted_char_list])) for outer in short_sorted_char_list] 287 | ave = most_common([bla[3] for bla in short_sorted_char_list]) #[mseval.index(min(mseval))][3] 288 | #print [bla[3] for bla in short_sorted_char_list] 289 | #print ave 290 | #miny = min([char[1] for char in short_sorted_char_list])/len(short_sorted_char_list) 291 | #maxh = max([char[3] for char in short_sorted_char_list])/len(short_sorted_char_list) 292 | for (x, y, w, h) in short_sorted_char_list: 293 | if ave/self.config["h_ave_diff"] < h < ave*self.config["h_ave_diff"]: 294 | character = plate_detail["warped"][y-1:y + h+1, x:x + w].copy() 295 | chardict = {} 296 | chardict["char_image"] = character 297 | resized = cv2.resize(character, (30, 30), interpolation=cv2.INTER_CUBIC)#cv2.equalizeHist(cv2.resize(character, (30, 30), interpolation=cv2.INTER_CUBIC)) 298 | chardict["char_image_scaled"] = resized 299 | 300 | chardict["text"], chardict["match_result_dict"] = match_with_neural_net(resized) 301 | if chardict["text"] == 'Q': 302 | chardict["ave_text"], chardict["ave_match_result_dict"] = match_against_average_chars(resized) 303 | plate_detail["plate"] += chardict["ave_text"] 304 | #print "AVE GEBRUIK", plate_detail["plate"] 305 | else: 306 | #print chardict["text"] 307 | plate_detail["plate"] += chardict["text"] 308 | plate_detail["chars"].append(chardict) 309 | #else: 310 | #print "discard op ave", (x, y, w, h) 311 | 312 | def skew_correct(self, plate_detail, chars=None): 313 | (xmin, ymin, xmax, ymax) = plate_detail["size"] 314 | if True: 315 | # rotate our roiblobs 316 | plateregion = self.image[ymin - self.config["h_max"]:ymax + self.config["h_max"], xmin - 2*self.config["w_max"]:xmax + 2*self.config["w_max"]].copy() 317 | (h, w) = plateregion.shape[:2] 318 | (cX, cY) = (w / 2, h / 2) 319 | degrees = math.atan(plate_detail["average_angle"]) * 180 / math.pi 320 | #print degrees 321 | #rotate_deg = - atan(((*glob_charlys_lys_it).m1+(*glob_charlys_lys_it).m2)/2.0) * 180.0 / 3.14159265; 322 | #degrees = 0 # som om die gemiddelde M te kry en dan skakel ons dit om na degree 323 | M = cv2.getRotationMatrix2D((cX, cY), degrees, 1.0) 324 | rotated = cv2.warpAffine(plateregion, M, (w, h)) 325 | #cv2.imshow("Rotated by xx Degrees", rotated) 326 | #cv2.waitKey(0) 327 | plate_detail["warped"] = rotated 328 | warped2 = cv2.adaptiveThreshold(rotated, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, self.config["thesh_window"], self.config["thesh_offset"]) 329 | plate_detail["warped2"] = warped2 330 | #TODO: Rotate eerder as correct 331 | else: 332 | plate_detail["plate"] = "" 333 | plateregion = self.image[ymin - self.config["h_max"]:ymax + self.config["h_max"], xmin - 2*self.config["w_max"]:xmax + 2*self.config["w_max"]].copy() 334 | if self.debug: 335 | cv2.rectangle(self.roiblobs, (xmin - 2*self.config["w_max"], ymin - self.config["h_max"]), (xmax + 2*self.config["w_max"], ymax + self.config["h_max"]), (255, 0, 0), 1) 336 | #gray = plateregion#cv2.cvtColor(plateregion, cv2.COLOR_BGR2GRAY) 337 | gray = cv2.GaussianBlur(plateregion, (5, 5), 0) 338 | edged = cv2.Canny(gray, 25, 250) 339 | #edged = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 25, thesh_offset) 340 | (cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 341 | cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:10] 342 | screenCnt = None 343 | plate_detail["edged"] = edged 344 | # find contours, stolen from pyimagesearch 345 | for c in cnts: 346 | # approximate the contour 347 | peri = cv2.arcLength(c, True) 348 | approx = cv2.approxPolyDP(c, 0.02 * peri, True) 349 | 350 | cv2.drawContours(plateregion, [approx], -1, (0, 0, 0), 1) 351 | if len(approx) == 4: 352 | screenCnt = approx 353 | break 354 | plate_detail["screenCnt"] = screenCnt 355 | if plate_detail["screenCnt"] is not None: 356 | warped = four_point_transform(plateregion, screenCnt.reshape(4, 2) * 1) 357 | #cv2.imshow("warped2", warped) 358 | #cv2.waitKey(0) 359 | warped2 = cv2.adaptiveThreshold(warped, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, self.config["thesh_window"], self.config["thesh_offset"]) 360 | plate_detail["warped"] = warped 361 | plate_detail["warped2"] = warped2 362 | return plate_detail 363 | 364 | 365 | if __name__ == "__main__": 366 | # construct the argument parser and parse the arguments 367 | ap = argparse.ArgumentParser() 368 | ap.add_argument("-i", "--image", required=False, help="Path to the image") 369 | ap.add_argument("-c", "--csv", required=False, help="File with CSV test data") 370 | ap.add_argument("-d", "--debug", required=False, help="Show images set to True") 371 | args = vars(ap.parse_args()) 372 | if args["image"]: 373 | image = cv2.imread(args["image"]) 374 | ob = Detector(debug=True if args["debug"] == "True" else False) 375 | 376 | retval = ob.detect_plates(image=image) 377 | print " ".join([x["plate"] if "plate" in x else "" for x in retval]) 378 | if args["debug"] == "True": 379 | cv2.imshow("Blobs ALL", ob.allblobs) 380 | cv2.imshow("Blobs size filter", ob.reducedblobs) 381 | cv2.imshow("Blobs group filtered", ob.roiblobs) 382 | cv2.waitKey(0) 383 | for detail in retval: 384 | print "PLATE:", detail["plate"] if "plate" in detail else "" 385 | if "edge" in detail: 386 | cv2.imshow("edged"+detail["plate"], detail["edged"]) 387 | if "warped" in detail: 388 | cv2.imshow("warped"+detail["plate"], detail["warped"]) 389 | if "warped2" in detail: 390 | cv2.imshow("warped2"+detail["plate"], detail["warped2"]) 391 | cv2.waitKey(0) 392 | else: 393 | # testdata with images 394 | if "csv" in args and args["csv"]: 395 | csv = [x.split(",") for x in open(args["csv"]).readlines()] 396 | ob = Detector(debug=True) 397 | hit = 0 398 | cnt = 0 399 | for line in csv: 400 | image = cv2.imread("test_data/%s.jpg"%(line[0])) 401 | #ob.detect_plates(image=image) 402 | try: 403 | retval = ob.detect_plates(image=image) 404 | cnt += 1 405 | if line[2] in [x["plate"] for x in retval]: 406 | hit += 1 407 | print "hit:", line[0], line[2], " ".join([x["plate"] for x in retval]) 408 | print "CNT", cnt, hit 409 | cv2.imwrite(line[0] + line[2] + ".jpg",image ) 410 | cv2.imwrite(line[0] + line[2] + "_all_blob.jpg", ob.allblobs) 411 | cv2.imwrite(line[0] + line[2] + "_reduced_blob.jpg", ob.reducedblobs) 412 | cv2.imwrite(line[0] + line[2] + "_roi_blob.jpg", ob.roiblobs) 413 | #else: 414 | #print "mis:", line[0], line[2], " ".join([x["plate"] for x in retval]) 415 | except: 416 | print "misex:", line[0] 417 | #cv2.imshow("Blobs ALL", ob.allblobs) 418 | #cv2.imshow("Blobs size filter", ob.reducedblobs) 419 | #cv2.imshow("Blobs group filtered", ob.roiblobs) 420 | #cv2.waitKey(0) 421 | if args["debug"] == "True": 422 | for detail in retval: 423 | print detail["plate"] if "plate" in detail else "" 424 | #if "edge" in detail: 425 | #cv2.imshow("edged"+detail["plate"], detail["edged"]) 426 | if "warped" in detail: 427 | cv2.imshow("warped"+detail["plate"], detail["warped"]) 428 | #if "warped2" in detail: 429 | #cv2.imshow("warped2"+detail["plate"], detail["warped2"]) 430 | cv2.imshow("Blobs group filtered", ob.roiblobs) 431 | cv2.waitKey(0) 432 | print "total:", 100.0*hit/len(csv) 433 | 434 | 435 | 436 | 437 | 438 | 439 | -------------------------------------------------------------------------------- /server/resources/html/login.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/server/resources/html/login.html -------------------------------------------------------------------------------- /server/resources/html/main.js: -------------------------------------------------------------------------------- 1 | // Write on keyup event of keyword input element 2 | $("#search").keyup(function(){ 3 | _this = this; 4 | // Show only matching TR, hide rest of them 5 | $.each($("#table tbody").find("tr"), function() { 6 | console.log($(this).text()); 7 | if($(this).text().toLowerCase().indexOf($(_this).val().toLowerCase()) == -1) 8 | $(this).hide(); 9 | else 10 | $(this).show(); 11 | }); 12 | }); 13 | 14 | -------------------------------------------------------------------------------- /server/resources/html/mainpage.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ANPR DATA 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |

Your community numberplates!!!

18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | {content} 30 | 31 |
NumberplateLocationDateImage
32 |
33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /server/resources/html/mainpage.html~: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bootstrap Example 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 |

Hover Rows

17 |

The .table-hover class enables a hover state on table rows:

18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
FirstnameLastnameEmail
JohnDoejohn@example.com
MaryMoemary@example.com
JulyDooleyjuly@example.com
44 |
45 | 46 | 47 | 48 | 63 | -------------------------------------------------------------------------------- /server/resources/js/main.js~: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantsolutions/anpr/97cb3d5dfe7060f9d51718ba85eb90bf6c8d4e8c/server/resources/js/main.js~ -------------------------------------------------------------------------------- /server/server.py: -------------------------------------------------------------------------------- 1 | import cherrypy 2 | import psycopg2 3 | from psycopg2 import extras 4 | import json 5 | import base64 6 | SCRIPT = """ 7 | 27 | """ 28 | class AnprServer(object): 29 | @cherrypy.expose 30 | def index(self): 31 | f = open('resources/html/mainpage.html','r') 32 | self._getContent() 33 | page = f.read() 34 | f.close() 35 | content = self._getContent() 36 | html_content = '' 37 | for item in content: 38 | new_dict = dict(item) 39 | new_dict['source'] ='' 40 | new_dict['source'] = 'data:image/jpeg;base64,'+json.loads(item['jsondata'])["jsondata"] 41 | 42 | html_content+= """ 43 | {numberplate} 44 | {camlocation} 45 | {time_received} 46 | 47 | """.format(**new_dict) 48 | page = page.format(**{'content':html_content}) 49 | page += SCRIPT 50 | return page 51 | 52 | @cherrypy.expose 53 | def pushImage(self,data): 54 | data = json.loads(data) 55 | insert_dict = {'numberplate':data['numberplate'], 56 | 'camlocation':data['camlocation'], 57 | 'jsondata':json.dumps(data)} 58 | result = self.cur.execute("insert into anpr.numberplates (numberplate,camlocation,jsondata,time_received) VALUES (%(numberplate)s,%(camlocation)s,%(jsondata)s,now()) ",insert_dict) 59 | self.conn.commit() 60 | return json.dumps(True) 61 | 62 | def _getContent(self): 63 | self.cur.execute('select * from anpr.numberplates order by id asc') 64 | return self.cur.fetchall() 65 | 66 | def setDBCur(self,cur): 67 | self.cur = cur 68 | 69 | def setDBConn(self,conn): 70 | self.conn = conn 71 | 72 | if __name__ == '__main__': 73 | dict_cur =None 74 | try: 75 | conn = psycopg2.connect("dbname='ANPR' user='anpr_user' host='localhost' password='anpr' port='5434'") 76 | dict_cur = conn.cursor(cursor_factory=extras.DictCursor) 77 | except Exception as e: 78 | print "I am unable to connect to the database" 79 | print e 80 | app = AnprServer() 81 | app.setDBCur(dict_cur) 82 | app.setDBConn(conn) 83 | cherrypy.quickstart(app, '/', {'/': {'tools.gzip.on': True},'/js':{'tools.staticdir.on': True,'tools.staticdir.dir': 'js'},'/html':{'tools.staticdir.on': True,'tools.staticdir.dir': 'html'}}) 84 | -------------------------------------------------------------------------------- /server/server.py~: -------------------------------------------------------------------------------- 1 | import cherrypy 2 | import psycopg2 3 | from psycopg2 import extras 4 | 5 | 6 | class AnprServer(object): 7 | @cherrypy.expose 8 | def index(self): 9 | f = open('resources/html/mainpage.html','r') 10 | self._getContent() 11 | page = f.read() 12 | #print page 13 | return page 14 | 15 | @cherrypy.expose 16 | def pushImage(self,jsondata): 17 | 18 | def _getContent(self): 19 | result = self.cur.execute('select * from anpr.numberplates order by id asc') 20 | print result 21 | 22 | def setDBCur(self,cur): 23 | self.cur = cur 24 | 25 | if __name__ == '__main__': 26 | dict_cur =None 27 | try: 28 | conn = psycopg2.connect("dbname='ANPR' user='anpr_user' host='localhost' password='anpr' port='5434'") 29 | dict_cur = conn.cursor(cursor_factory=extras.DictCursor) 30 | except Exception as e: 31 | print "I am unable to connect to the database" 32 | print e 33 | app = AnprServer() 34 | app.setDBCur(dict_cur) 35 | cherrypy.quickstart(app, '/', {'/': {'tools.gzip.on': True}}) 36 | --------------------------------------------------------------------------------