请教关于一句代码(冒号逗号冒号)的意思
本帖最后由 onoffon 于 2022-5-10 08:44 编辑看到一个函数
def matchAB(fileA, fileB):
# 读取图像数据
imgA = cv2.imread(fileA)
imgB = cv2.imread(fileB)
# 转换成灰色
grayA = cv2.cvtColor(imgA, cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(imgB, cv2.COLOR_BGR2GRAY)
# 获取图片A的大小
height, width = grayA.shape
# 取局部图像,寻找匹配位置
result_window = np.zeros((height, width), dtype=imgA.dtype)
for start_y in range(0, height-100, 10):
for start_x in range(0, width-100, 10):
window = grayA
match = cv2.matchTemplate(grayB, window, cv2.TM_CCOEFF_NORMED)
_, _, _, max_loc = cv2.minMaxLoc(match)
matched_window = grayB:max_loc+100, max_loc:max_loc+100] #[ :,: ] 为什么能这样表达
result = cv2.absdiff(window, matched_window)
result_window = result
plt.imshow(result_window)
plt.show()
matched_window = grayB:max_loc+100, max_loc:max_loc+100]
result_window = result
红色那两句,列表中 [ : , : ] 这种表达方式是什么意思,为什么能有这种方式?如果这样:
x = ["a123","b234","c345","d","e", "f"]
print(x)
则会报错?
逗号间隔的是参数,意思就是 参数一,参数二
至于冒号,你可以理解为 类的内部方法
函数(类1:方法1的值, 类2:方法1的值)这是给函数传入了2个参数, 而每个参数调用了其他类里面的方法获取的值 这个应该编程基础里面有说,但比较少用。。楼上的解释不错 x
本质上是调用x.__getitem__((slice(1, 2, None), slice(4, 5, None)))
传入的是一个元组, list对象本身并不支持传入元组的操作。
红色的可行是numpy对传入元组做了扩展 感谢楼上几位的解答!{:1_893:} 看起来应该就是个切片吧。。就是取一系列索引的值。。不是很懂为啥楼上的解释会牵扯上函数和类{:1_908:},也不懂为啥有人说这个比较少用{:1_896:}
报错是因为你定义的x是一维的,不能用二维索引,并且定义的x是列表类型,不能用元组索引
这样应该就不报错了:
import numpy
x = numpy.array([["a123","b234","c345"],["d","e", "f"]])
print(x)
屁嗝球 发表于 2022-5-10 11:45
看起来应该就是个切片吧。。就是取一系列索引的值。。不是很懂为啥楼上的解释会牵扯上函数和类, ...
不是切片,切片没有这种用法,看顶楼的红色部分 onoffon 发表于 2022-5-10 15:20
不是切片,切片没有这种用法,看顶楼的红色部分
明明就是ndarray的切片…… gzq830510 发表于 2022-5-10 15:40
明明就是ndarray的切片……
感谢你解释,新手,慢慢消化中
页:
[1]