Android OpenCV Создать Rect

0

Добрый вечер, вам нужна помощь в получении квадратной области пикселей rgb с помощью openCV Im, пытающейся получить пиксели из области 50x50 в центре экрана, но я не получил никакого успеха. если я использую выход, я не получаю ни одного пикселя, если использую оригинальный матовый (изображение) его получение верхнего угла. Пожалуйста, помогите кому-нибудь помочь

@Override
public void onPreviewFrame(Mat image) {

    int w = image.cols();
    int h = image.rows();


    Mat roi=new Mat(image, new Rect(h/2 , w/2 , 50, 50));
    Mat output = roi.clone();

    int rw=output.cols();
    int rh=output.rows();

    //double [] arrp = output.get(rh, rw);//if i use the output i dont get any pixel
    double [] arrp = image.get(rh, rw);//if use original mat its getting the top corner
    Log.i("",+(int)arrp[2]+" "+ (int)arrp[1]+" "+(int)arrp[0]);
}
Теги:
opencv

1 ответ

3

Я предполагаю, что вы можете использовать copyTo:

Mat output(50, 50, image.type());
image(Rect(h/2 , w/2 , output.size())).copyTo(output);

Матричный класс имеет оператор (const Rect & roi), который возвращает подматрицу (без глубокой копии данных). : http://docs.opencv.org/modules/core/doc/basic_structures.html#id6

РЕДАКТИРОВАТЬ:

Не видел, чтобы это было для андроида. Я думаю, что нет оператора, поэтому вы должны использовать функцию submat:

image.submat(Rect(h/2 , w/2 , output.size())).copyTo(output)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню