-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathiou.cpp
More file actions
51 lines (41 loc) · 1.31 KB
/
Copy pathiou.cpp
File metadata and controls
51 lines (41 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//
// Created by Dariya Petrova on 21.05.2020.
//
#include <iostream>
#include "iou.h"
/*!
* вычиляет метрику IoU - intersection over union
* @param img1 - первое изображение
* @param img2 - второе изображение
* @return значение iou
*/
double getIou(Mat img1, Mat img2) {
Mat gray1;
cvtColor(img1, gray1, COLOR_BGR2GRAY);
Mat blWhImg1;
threshold(gray1, blWhImg1, 127, 255, THRESH_BINARY);
Mat gray2;
cvtColor(img2, gray2, COLOR_BGR2GRAY);
Mat blWhImg2;
threshold(img2, blWhImg2, 127, 255, THRESH_BINARY);
Mat intersectionImg;
bitwise_and(img1, img2, intersectionImg);
Mat gray3;
cvtColor(intersectionImg, gray3, COLOR_BGR2GRAY);
Mat blWhImgInter;
threshold(gray3, blWhImgInter, 127, 255, THRESH_BINARY);
int intersectionArea = countNonZero(blWhImgInter);
Mat joinImg;
bitwise_or(img1, img2, joinImg);
// showImg(img1, "img1");
// showImg(img2, "img2");
// showImg(intersectionImg, "intersection");
// showImg(joinImg, "join");
Mat gray4;
cvtColor(joinImg, gray4, COLOR_BGR2GRAY);
Mat blWhImgJoin;
threshold(gray4, blWhImgJoin, 127, 255, THRESH_BINARY);
int joinArea = countNonZero(blWhImgJoin);
double iou = (double)intersectionArea / joinArea;
return iou;
}