OpenCV использует BGR как свой порядок цветов по умолчанию для изображений, matplotlib использует RGB. Когда вы показываете изображение, загруженное с помощью OpenCv в matplotlib, каналы будут возвращаться на передний план.
Самый простой способ исправить это - использовать OpenCV для явного преобразования его обратно в RGB, как и при создании изображения в оттенках серого.
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
И затем используйте это в ваш сюжет.
Возможно, вы можете использовать PowerManager для его перезагрузки (это не гарантирует перезагрузки - OS может отменить его):
http://developer.android.com/ ссылка / android / os / PowerManager.html # reboot (java.lang.String )
Для этого требуется разрешение REBOOT:
http: // разработчик .android.com / reference / android / Manifest.permission.html # REBOOT
Можете ли вы также проверить свой логарифм при попытке включить / отключить блокировку клавиатуры и опубликовать что там?
Вы не можете сделать это из обычного приложения SDK. Это могут быть только приложения, подписанные с ключом прошивки системы.
Я не вижу никакого сходства с вашим названием и фрагментом кода в теле. Этот фрагмент связан с KeyGuardManager, который используется для блокировки и разблокировки клавиатуры.
Чтобы выключить телефон, вам понадобятся команды PowerManager или SU. (На корневых устройствах.)
С запущенной командой командной строки оболочки svc power shutdown работает для меня в android 7.1
Это код, который я использую для выполнения любой системной команды.
void shutdown_sys()
{
Process chperm;
try {
chperm=Runtime.getRuntime().exec("su");
DataOutputStream os =
new DataOutputStream(chperm.getOutputStream());
os.writeBytes("shutdown\n");
os.flush();
chperm.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Вызовите эту функцию из своего приложения Android. Он будет работать, если su работает в вашей системе. Дайте мне знать, если это не сработает. У меня нет базы Android, готовой к тестированию. Но то же самое работает для перезагрузки. Таким образом, shutdown также является командной оболочкой Linux, которая также будет присутствовать на Android. Все лучшее
Возможно, но вам необходимо Rooted
Android-устройство с доступом Superuser
. Вы не можете сделать это без Root, если ваше приложение не подписано с System Firmware Key
. Попробуйте использовать следующий код:
Shutdown:
try {
Process proc = Runtime.getRuntime()
.exec(new String[]{ "su", "-c", "reboot -p" });
proc.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
Перезагрузка:
Тот же код, используйте "reboot"
вместо "reboot -p"
.
[С другой стороны: я где-то читал, что эти команды не работают на Stock HTC ROMs, но не подтвердили себя]
Если ваше устройство внедрено, вы можете попробовать ниже решение
Выключение:
try {
Process proc = Runtime.getRuntime()
.exec(new String[]{ "su", "-c", "reboot -p" });
proc.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
Перезагрузка:
Тот же код, просто используйте "reboot"
вместо "reboot -p"
.