Je sais que dans OpenCV 2.1 nous avions une fonction pour définir ROI: cvSetImageROI(), mais une telle fonction n'existe pas en 2.4 (ou du moins je ne peux pas le trouver dans ses manuels et aide . section)Comprendre la région d'intérêt dans openCV 2.4
est cependant ici le seul code utile que je pouvais trouver qui utilise OpenCV 2.4 pour le retour sur investissement de mage, mais je vais avoir du mal à comprendre:
// 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);
ici, ils veulent ajouter un journal très petit à une grande image en bas à droite de l'image originale. Donc, ce que je comprends d'ici, c'est qu'une autre matrice est créée pour contenir le retour sur investissement. Ses dimensions données en utilisant la fonction rect, et la taille est donnée égale à celle du petit logo qu'ils veulent ajouter.
Puis c'est ce qui me trouble: cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI);
ici la source 1 de addWeighted est le jeu de dimensions ROI, la source 2 est le logo et la destination est également le jeu de dimensions ROI. Est-ce correct? ou ai-je oublié quelque chose? Ensuite, le résultat est affiché avec le logo ajouté à la grande image. Où dans ces commandes était la grande image incluse.
Aussi avant de demander ici je voulais essayer le code moi-même pour peut-être aider à clarifier la situation. mais je reçois cette erreur, comme l'image() ne reconnaît pas: '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;
}
C'est génial. Merci beaucoup. C'est la raison pour laquelle je devenais confus, je pensais que l'image était une fonction et je n'ai trouvé aucune mention de la grande image. Merci d'avoir éclairci cela. Aussi une dernière question concernant ce sujet serait, comment puis-je trouver la position du pixel de l'apex du rectangle. Je suppose que je veux ajouter mon logo en haut à gauche de src 1, puis dans le 'src1 (Rect (385,270, logo.cols, logo.rows)),' quelle position dois-je donner à la place de la dite 385,270? Y at-il un moyen facile de trouver cela? Merci – StuckInPhD
Vous pouvez utiliser les coordonnées dans votre ROI, soit 385,270 dans l'image correspond à 0,0 dans votre ROI. Cela fonctionnera tant que vous utilisez l'accesseur de cv :: Mat, comme Mat :: at (int row, int col). Si vous utilisez directement les données brutes, vous devez faire attention à ce que la disposition réelle des données dans le ROI soit la disposition des données de l'image originale – remi