首页 > 小米笔试0915(cv算法)
头像
左手东升,右手超越
编辑于 2020-09-15 20:43
+ 关注

小米笔试0915(cv算法)

不知道一套试卷两种语言,可不可以,有知道都小伙伴求解答~
1. 可能捡最大数
int main() {
	int n, m;
	cin >> n >> m;
	vector<vector<int>> num(n, vector<int>(m, 0));
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> num[i][j];
		}
	}
	vector<vector<int>> dp(n, vector<int>(m, 0));
	int sum = 0;
	for (int i = 0; i < n; i++) {
		sum += num[i][0];
		dp[i][0] = sum;
	}
	sum = 0;
	for (int i = 0; i < m; i++) {
		sum += num[0][i];
		dp[0][i] = sum;
	}
	for (int i = 1; i < n; i++) {
		for (int j = 1; j < m; j++) {
			dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + num[i][j];
		}
	}
	cout << dp[n - 1][m - 1];
	getchar();
	return 0;
}

2. NMS
def nms(bboxes, th):
    x1 = bboxes[:, 0]
    y1 = bboxes[:, 1]
    x2 = bboxes[:, 2]
    y2 = bboxes[:, 3]

    areas = (y2-y1+1) * (x2-x1+1)
    scores = bboxes[:, 4]
    keep = []
    index = scores.argsort()[::-1]

    while index.size > 0:
        i = index[0]
        keep.append(i)

        x11 = np.maximum(x1[i], x1[index[1:]])
        y11 = np.maximum(y1[i], y1[index[1:]])
        x22 = np.minimum(x2[i], x2[index[1:]])
        y22 = np.minimum(y2[i], y2[index[1:]])

        w = np.maximum(0, x22-x11+1)
        h = np.maximum(0, y22-y11+1)

        ov = w*h
        ious = ov/(areas[i]+ areas[index[1:]] - ov)

        idx = np.where(ious <= th)[0]
        index = index[idx+1]

    return keep



import numpy as np
line = input()
N, th = line.split('\n')[0].split(' ')
N, th = int(N), float(th)
bboxes = []
for i in range(N):
    line = input()
    x1, y1, x2, y2, score = line.split('\n')[0].split(' ')
    tmp = [float(x1), float(y1), float(x2), float(y2), float(score)]
    bboxes.append(tmp)

bboxes = np.array(bboxes)
keep = nms(bboxes, th)
res = bboxes[keep]
for i in range(len(res)):
    line = ""
    for j in res[i]:
        line += str(j) + " "

    print(line)


全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐