Я знаю, что в OpenCV 2.1 у нас была функция для определения ROI: cvSetImageROI(), но такая функция не существует в версии 2.4 (или, по крайней мере, я не могу найти ее в ее руководствах и разделе справки.)
однако вот только полезный код, который я мог бы найти, который использует opencv 2.4 для MAI ROI, но мне трудно понять его:
// define image ROI
cv::Mat imageROI;
imageROI= image(cv::Rect(385,270,logo.cols,logo.rows));
// add logo to image
cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI);
Здесь они хотят добавить очень маленький журнал в большое изображение в нижней правой части исходного изображения.
Итак, я понимаю, что для сохранения ROI создается другая матрица. Его размеры, заданные с помощью функции rect, и размер задаются равными размерам небольшого логотипа, который они хотят добавить.
Тогда thsi меня смущает: cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI);
здесь источник 1 addWeighted - это набор размеров ROI, источником 2 является логотип, а пункт назначения также является параметром ROI. Это верно? или я чего-то не хватает?
После этого результат будет показан с логотипом, добавленным к большому изображению. Где в этих командах было включено большое изображение.
Также перед тем, как задать вопрос, я хотел попробовать сам код, возможно, помочь прояснить ситуацию. но я получаю эту ошибку, поскольку изображение() не распознается: 'image': identifier not found
int _tmain(int argc, _TCHAR* argv[])
{
Mat src1, imageROI, logo;
logo = imread("c:\\car1.jpg", -1);
imageROI= image(Rect(385,270,logo.cols,logo.rows));
addWeighted(imageROI,1.0,logo,0.3,0.,imageROI);
namedWindow("meh", CV_WINDOW_AUTOSIZE);
imshow("meh", imageROI);
waitKey(0);
return 0;
}