python蓝桥杯:有一块农田被划分为N*M块,农作物和杂草分布生长在农田中?

Python018

python蓝桥杯:有一块农田被划分为N*M块,农作物和杂草分布生长在农田中?,第1张

思路:先将输入的数据保存成二维字符串矩阵或者0,1矩阵,方便后续统计。然后可以使用并查集或者dfs统计四个方向上相邻的农田 返回独立的农田区域数量

以深搜举例:先转换成0/1矩阵(1表示农田0表示杂草)然后遍历矩阵当遇到值为1的坐标进行dfs,ans+1 遍历结束返回ans

部分python代码:

m = len(arr)

n = len(arr[0])

ans = 0

def dfs(i,j):

arr[i][j] = 0

for x,y in [[i+1,j],[i-1,j],[i,j+1],[i,j-1]]:

if not(0<=x<m and 0<=y<n) or arr[x][y] ==0:

continue

dfs(x,y)

for i in range(m):

for j in range(n):

if arr[i][j] == 1:

dfs(i,j)

ans += 1

return ans

要学习以下计算机视觉的知识才能算入门:

1.图像生成.(包括成像原理,相机内参数外参数及光学畸变矫正方法,光照,阴影和颜色空间)

2.早期视觉.(包括低通滤波的平滑,中值滤波,高通滤波的图像增强,图像变换域,频域下的滤波,卷积,高斯和拉普拉斯金字塔,图像纹理)

3.图像数学形态学处理.(包括腐蚀,膨胀,开运算,闭运算,顶帽运算,骨架提取,击中击不中变换)

4.底层视觉.(包括Fast,SITF,SURF,ORB等特征点,LATCH等描述符,匹配,单应变换,RANSAC,立体视觉,运动中恢复结构SFM)

5..中层视觉.(包括图像分割,分水岭,区域生长,聚类,拟合,霍夫,光流,图像直方图,相似度,CamShift,卡尔曼滤波,粒子滤波)

6.高层视觉.(包括配准,轮廓,凸包,深度图,图像分类,图像检索)

7.顶层视觉.(包括物体识别,人类检测识别,人体跟踪,行为识别等)

另外,还要掌握一定的C++,python等语言的编程技术和OpenCV等函数库的使用