Моя цель - добавить наложение на предварительный просмотр камеры, который найдет края книги. Для этого я переопределить onPreviewFrame где я сделать следующее:Android opencv byte [] to mat to byte []
public void onPreviewFrame(byte[] data, Camera camera) {
Camera.Parameters parameters = camera.getParameters();
int width = parameters.getPreviewSize().width;
int height = parameters.getPreviewSize().height;
Mat mat = new Mat((int) (height*1.5), width, CvType.CV_8UC1);
mat.put(0,0,data);
byte[] bytes = new byte[(int) (height*width*1.5)];
mat.get(0,0,bytes);
if (!test) { //to only do once
File pictureFile = getOutputMediaFile();
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(bytes);
fos.close();
Uri picUri = Uri.fromFile(pictureFile);
updateGallery(picUri);
test = true;
} catch (IOException e) {
e.printStackTrace();
}
}
}
Сейчас я просто хочу, чтобы занять одно из предварительных просмотров и сохранить его после преобразования в мат.
Проведя бесчисленное количество часов, чтобы посмотреть выше, сохраненное изображение не может быть видно на моем тестовом телефоне (LG Leon). Кажется, я не могу найти проблему. Я смешиваю высоту/ширину, потому что я фотографирую в портретном режиме? Я попытался переключить их и до сих пор не работает. В чем проблема?
Смешные достаточно, один из моих конечных целей такой же, как у вас: чтобы отобразить прямоугольники вокруг текста в режиме реального времени. Я попробую использовать ваш ответ и посмотреть, куда он идет. благодаря! – Dimebag