1. Fenómeno del problema:
El compilador informa un error: excepción no controlada en 0x00007FFE8CCFCD29 (en photo mix.exe): excepción de Microsoft C++: cv::Exception en la ubicación de memoria 0x000000F60319F020.
2. Análisis del problema:
El código fuente es el siguiente:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main() {
Mat srcImage1 = imread("卧室智能家居总图.jpg");
Mat logoImage = imread("智能家居.jpg");
if (!srcImage1.data) {
printf("读取srcImage1错误!\n");
return 0;
}
if (!logoImage.data) {
printf("读取logoImage错误!\n");
return 0;
}
Mat imageROI = srcImage1(Rect(200, 150, logoImage.cols, logoImage.rows));
Mat mask = imread("智能家居.jpg", 0);
logoImage.copyTo(imageROI, mask);
namedWindow("<1>利用ROI实现图像叠加示例窗口");
imshow("<1>利用ROI实现图像叠加示例窗口", srcImage1);
waitKey(0);
return 1;
}
Después de la depuración, se puede encontrar que hay un problema con esta oración.
Dado que una de las imágenes que elegí es de 790*1141 y la otra de 800*680, el ROI seleccionado excede el rango de la imagen original, lo que eventualmente conduce a una interrupción anormal.
3. Solución:
Ajuste los parámetros de intercepción de ROI o ajuste los píxeles de la imagen (según el tamaño de la imagen seleccionada por el individuo).