Android рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕рдиреЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдЬрд╛рд╡рд╛ (SDK) рд╕реЗ C ++ (NDD) рддрдХ рдХреЗ рдХреЛрдб рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдбреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдирддреАрдЬрд╛ рдпрд╣ рдирд┐рдХрд▓рд╛ рдХрд┐ рдЬреЛ рдХреБрдЫ рджрд╢рдХ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдорд┐рд▓рд╛, рдЙрд╕реЗ рдЯрд░рдмреЛрдкрд╛рд╕реНрдХрд▓ рдХреЛрдб рдореЗрдВ рдХреЛрдбрд╛рдВрддрд░рдХ рдЖрд╡реЗрд╖рдг рдмрдирд╛ рджрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдирдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдЕрдиреБрднрд╡ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдЬреЛ рд▓реЛрдЧ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ
рдЗрд╕ рд▓рд┐рдВрдХ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рд▓рдШреБ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреБрдЫ рдЖрдВрдХрдбрд╝реЗ рджреЗрдирд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдЖрдиреБрднрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП, рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдФрд░ рдлрд┐рд░ рд╕реА ++ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ред рдФрд░, рд╢рд╛рдпрдж, рдпреЗ рдЖрдВрдХрдбрд╝реЗ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЪреВрдВрдХрд┐ рдореЗрд░рд╛ рдЖрд╡реЗрджрди рдлреЛрдЯреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЕрдбрд╝рдЪрдиреЗрдВ рдЫрд╡рд┐ рдХреЗ рдкрд┐рдХреНрд╕реЗрд▓ рдФрд░ рдЙрди рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреЗ рдЪрдХреНрд░ рдереЗред рдореИрдВрдиреЗ рдЕрд╕рд▓реА рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ - рдиреЗрдХреНрд╕рд╕ рд╡рди рдФрд░ рдиреЗрдХреНрд╕рд╕ 7 (2012)ред рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо (рдПрдордПрд╕ рдореЗрдВ) рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдкрд┐рдд рд╣реИрдВ:
рдкрд░рдд рдУрд╡рд░рд▓реЗ (рдЪрдордХрджрд╛рд░ рдореЛрдб, рд░рдВрдЧ рдбреНрд░рд╛рдЗрдВрдЧ)
рдПрдХ рдиреЗрдХреНрд╕рд╕ | рдиреЗрдХреНрд╕рд╕ 7 |
---|
рдПрд╕рдбреАрдХреЗ | NDK | рдПрд╕рдбреАрдХреЗ | NDK |
---|
2563 | 120 | 4850 | 90 |
2122 | 100 | 4520 | 190 |
2162 | 110 | 4330 | 100 |
рдиреЗрдХреНрд╕рд╕ 7 рдХреЗ рд▓рд┐рдП рдЧрддрд┐ рдореЗрдВ рдФрд╕рдд рд▓рд╛рдн 21 рдЧреБрдирд╛ рд╣реИ, рдиреЗрдХреНрд╕рд╕ 7 рдХреЗ рд▓рд┐рдП - 36 рдЧреБрдирд╛редрд▓реЗрдпрд░ рдУрд╡рд░рд▓реЗ (рдХрд▓рд░ рдбреЙрдЬ рдореЛрдб, рдореЛрдиреЛрдХреНрд░реЛрдо)
рдПрдХ рдиреЗрдХреНрд╕рд╕ | рдиреЗрдХреНрд╕рд╕ 7 |
---|
рдПрд╕рдбреАрдХреЗ | NDK | рдПрд╕рдбреАрдХреЗ | NDK |
---|
2673 | 30 | 5,720 | 80 |
2572 | 20 | 6230 | 70 |
2573 | 20 | 6110 | 70 |
рдиреЗрдХреНрд╕рд╕ 7 рдХреЗ рд▓рд┐рдП рдФрд╕рддрди рдЧрддрд┐ рдЧрди 112 рдХрд╛ рд╣реИ, рдиреЗрдХреНрд╕рд╕ 7 рдХреЗ рд▓рд┐рдП - 82 рдмрд╛рд░редрдУрд╡рд░рд▓реЗ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдврд╛рд▓
рдПрдХ рдиреЗрдХреНрд╕рд╕ | рдиреЗрдХреНрд╕рд╕ 7 |
---|
рдПрд╕рдбреАрдХреЗ | NDK | рдПрд╕рдбреАрдХреЗ | NDK |
---|
1301 | 321 | 3010 | 470 |
1221 | 330 | 2670 | 620 |
1211 | 300 | 2770 | 610 |
Nexus 7 рдХреЗ рд▓рд┐рдП рдФрд╕рддрди рдЧрддрд┐ рд▓рд╛рдн 4 рдЧреБрдирд╛ рд╣реИ, Nexus 7 - 5 рдЧреБрдирд╛ рдХреЗ рд▓рд┐рдПредрдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдо рдкрд░рд┐рдорд╛рдг рдХреЗ рдПрдХ рдпрд╛ рджреЛ рдХреНрд░рдореЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреВрд░реНрдг рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рдЖрдк рдПрдирдбреАрдХреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХрд╛рдо рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд╡рд░рдг рдХреЛ рджреЗрдЦ рд╕рдХреЗрдВред рдЕрдВрддрд┐рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдорд╛рдореВрд▓реА рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдУрдкрдирд╕реАрд╡реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдп, рдЬреЛ рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИрдВ, рдХрд╛ рдЙрдкрдпреЛрдЧ рдУрд╡рд░рд▓реЗ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдЖрд╡реЗрджрди рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд╡рд░рдг рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рдореИрдВ OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрд╡реЗрджрди рдкрд░ рд╕рдВрдкрд░реНрдХ рдХрд░реВрдВрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЬрд╛рд╡рд╛ рд╣рд┐рд╕реНрд╕рд╛ NDK рдкрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдЖрд╡рд░рдг рд╣реИред рдлрд┐рд░ рднреА, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рднрд╛рд░реА рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЦреЗрд▓рдиреЗ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ - рдЬреИрд╕реЗ рдХрд┐ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛, рдПрдХ рд╡рд┐рдзрд┐ -ред рдЬрд╛рд╡рд╛ рдФрд░ рдПрдирдбреАрдХреЗ рдХреЗ рдмреАрдЪ рдЧрддрд┐ рдореЗрдВ рдЕрдВрддрд░ рдЕрдзрд┐рдХрддрдо 10% рдерд╛, рдЬрд┐рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрд╕ рд╕рдордп рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╣реА рдЪрд┐рддреНрд░ рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрд╛ред
рдЕрджреНрдпрддрдиред рдЕрдкрдиреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдкреНрд░рд┐рдп рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд░реЗрдВред
рддреЛ, рдпрд╣рд╛рдБ рдПрдХ рдирдореВрдирд╛ рдХреЛрдб рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдУрдкрдирд╕реАрд╡реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЬрд╛рд╡рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рд╣реИ:
for (int i=0; i<mat.rows(); i++){ for (int j=0; j<mat.cols(); j++) { double[] matPix = mat.get(i, j); double[] topPix = top.get(i, j); if (matPix[0]+topPix[0]>255){ matPix[0] = 255.; } else { matPix[0] = (255. * matPix[0]) / (256. - topPix[0]); } mat.put(i, j, matPix); } }
рд╣рдо рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреЗ рдкрд┐рдХреНрд╕реЗрд▓-рдмрд╛рдп-рдкрд┐рдХреНрд╕реЗрд▓ рджреЛ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдФрд░ рджреВрд╕рд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдкрд░рд┐рдгрд╛рдореА рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред
рд▓реЗрдЦ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЖрдВрдХрдбрд╝реЗ рдПрдХ-рд░рдВрдЧ рд╣реИрдВ):
int size = mat.cols(); byte[] matPix = new byte[size]; byte[] topPix = new byte[size]; for (int i=0; i<mat.rows(); i++){ mat.get(i, 0, matPix); top.get(i, 0, topPix); for (int j=0; j<size; j++) { int mp = (matPix[j] & 0xFF); int tp = (topPix[j] & 0xFF); if (mp+tp>255){ mp = 255; } else { mp = (255 * mp) / (256 - tp); } matPix[j] = (byte) mp; } mat.put(i, 0, matPix); }
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдЕрд╕рд▓реА рдиреЗрдХреНрд╕рд╕ рд╡рди рдФрд░ рдиреЗрдХреНрд╕рд╕ 7 рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП 3 рдореЗрдЧрд╛рдкрд┐рдХреНрд╕реЗрд▓ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ - рдореИрдВ рдПрдХ рд╕рд╛рде рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдо (рдФрд╕рдд, рдПрдордПрд╕ рдореЗрдВ) рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рд╣реИрдВ:
| рдПрдХ рдиреЗрдХреНрд╕рд╕ | рдиреЗрдХреНрд╕рд╕ 7 |
---|
| рдПрд╕рдбреАрдХреЗ | NDK | рдПрд╕рдбреАрдХреЗ | NDK |
---|
рдХреЛрдИ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ | 35404 | 245 | 22,755 | 160 |
рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде | 340 | 205 | 210 | 120 |
рд╣рд░ рдХреЛрдИ рдЦреБрдж рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред C ++ рдореЗрдВ рдХреЛрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдЬрд╛рд╡рд╛ рдХреЗ рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдХреЛрдб рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛, рдпрд╣ рдКрдкрд░ рд╡рд╛рд▓реЗ рдХреЗ рд╕рдорд╛рди рд╣реИред