Перейти к содержимому
Compvision.ru
ter_nk

Ошибка при копировании в ROI

Recommended Posts

Создаю Mat больший по размеру и пытаюсь как бы по центру

 

Size sz;
sz.width = mat_gray.size().width + 200;
sz.height = mat_gray.size().height + 200;

Mat big_mat = Mat::zeros(sz, CV_8UC3);
const Rect roi_rect(100, 100, mat_gray.size().width, mat_gray.size().height);
mat_gray.copyTo(big_mat(roi_rect));

 

на этой строчке ошибка

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Mat big_mat = Mat::zeros(sz, CV_8UC3);

 

Написал CV_8UC3 а надо CV_8UC1

 

Сами и ответили :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В ПО версии 2.3.1 этой функции нет, может кто знает как это делать в старых версиях?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

может кому понадобится

for(int x=src_rect.x; x < src_rect.width; ++x)
{
 for(int y=src_rect.y; y< src_rect.height; ++y)
 {
  for( int c = 0; c < 3; c++ ) 
  {
  dst_mat.at<Vec3b>(y + y_shift,x + x_shift)[c] = src_mat.at<Vec3b>(y,x)[c];
  }
 }
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

это как бы неэфективное решение.

 

я думаю в начале была ошибка в том, что размер roi был меньше чем mat_gray

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вначале была ошибка, что там Mat не совпадали. Неэффективно, да, но а есть другие варианты, там же кусками массивов не покопируешь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×