2
J'essaie de remplir une matrice opencv avec certaines valeurs, mais je continue d'obtenir des segcages. Le code est le suivant:Segfault lors de l'utilisation de cv Mat :: at
Mat mask_gx(in_window_size, in_window_size, image.type());
for(int i = 0; i <= in_window_size; i++)
{
for(int j = 0; j <= in_window_size; j++)
{
double gx = (-i/in_sigma) * pow(M_E, ((pow(i, 2)* pow(j, 2))/pow(in_sigma, 2))/(-2));
mask_gx.at<double>(j, i) = gx;
}
}
Le problème est dans la dernière ligne. Je l'ai testé avec:
mask_gx.at<int>(j, i) = 1;
et je reçois toujours le segfault.
Est-ce que quelqu'un a des idées sur ce qui semble être le problème avec ce code?
Merci, je l'ai corrigé, mais cela ne résout pas le problème. Fait intéressant, la dernière ligne fonctionne parfaitement bien en dehors de la boucle. – mobearette
Se pourrait-il que 'image.type()' ne corresponde pas correctement à un type qui permet de définir des valeurs 'double' (comme dans' mask_gx.at ')? Peut-être que cela correspond à un type qui est plus petit qu'un «double»? –
Ce problème devient de plus en plus intéressant. La valeur de in_window_size est 11. Lorsque j'essaie de mettre des valeurs fixes dans la boucle, cela fonctionne parfaitement jusqu'à 7. Mais tout ce qui suit 7 provoque une erreur de segmentation. Encore une fois, le code suivant fonctionne parfaitement bien en dehors de la boucle: 'mask_gx.at (11, 11) = 1.0;' –
mobearette