Tôi đang cố gắng kết hợp hai hình ảnh. Nó rất dễ dàng nếu họ có cùng kích thước, nhưng nếu một trong những hình ảnh nhỏ hơn hoặc lớn hơn cv :: addWeighted không thành công.Sao chép/pha trộn hình ảnh có kích thước khác nhau bằng cách sử dụng opencv
Image (dự kiến sẽ lớn hơn) Hình ảnh B (dự kiến sẽ được nhỏ hơn)
tôi đã cố gắng để tạo ra một ROI - đã cố gắng để tạo ra một hình ảnh thứ ba của kích thước của A và copy B bên trong - Tôi có thể dường như không đúng. Hãy giúp tôi.
double alpha = 0.7; // something
int min_x = (A.cols - B.cols)/2);
int min_y = (A.rows - B.rows)/2);
int width, height;
if(min_x < 0) {
min_x = 0; width = (*input_images).at(0).cols - 1;
}
else width = (*input_images).at(1).cols - 1;
if(min_y < 0) {
min_y = 0; height = (*input_images).at(0).rows - 1;
}
else height = (*input_images).at(1).rows - 1;
cv::Rect roi = cv::Rect(min_x, min_y, width, height);
cv::Mat larger_image(A);
// not sure how to copy B into roi, or even if it is necessary... and keep the images the same size
cv::addWeighted(larger_image, alpha, A, 1-alpha, 0.0, out_image, A.depth());
Thậm chí một cái gì đó giống như cvSetImageROI - có thể làm việc nhưng tôi không thể tìm thấy C++ tương đương - có thể giúp - nhưng tôi không biết làm thế nào để sử dụng nó để vẫn giữ nội dung hình ảnh, chỉ đặt một hình ảnh bên trong ROI ...
Bạn có muốn 'out_image' là (1) phần cắt của' A' được trộn với 'B' (do đó kích thước của' B') hoặc (2) kích thước của 'A' với một phần đã chọn được pha trộn với' B' (do đó kích thước của 'A')? – Jacob
Kích thước của A - với phần được chọn được pha trộn với B – Thalia
Tại sao 'width = (* input_images) .at (0) .cols - 1'? Tại sao không '(* input_images) .at (0) .cols'? – Jacob