Перед вот этой строкой
for (int i = 0; i < rows_num; i++) delete[] Mat_1[i]; //Выдаёт ошибку тут
нужно проверять if( Mat_1 != nullptr )
А вот после этой строки цикл не нужен, там самоприсваивание происходит внутри одного массива
Mat_1 = Mat_copy; //Переназначаем указатели на память выде