onoffon 发表于 2022-5-10 08:42

请教关于一句代码(冒号逗号冒号)的意思

本帖最后由 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)
则会报错?

lazycat6833 发表于 2022-5-10 09:08

逗号间隔的是参数,意思就是 参数一,参数二
至于冒号,你可以理解为 类的内部方法
函数(类1:方法1的值, 类2:方法1的值)这是给函数传入了2个参数, 而每个参数调用了其他类里面的方法获取的值

海是倒过来的天 发表于 2022-5-10 09:39

这个应该编程基础里面有说,但比较少用。。楼上的解释不错

zxc9989 发表于 2022-5-10 09:43

x
本质上是调用x.__getitem__((slice(1, 2, None), slice(4, 5, None)))
传入的是一个元组, list对象本身并不支持传入元组的操作。
红色的可行是numpy对传入元组做了扩展

onoffon 发表于 2022-5-10 09:54

感谢楼上几位的解答!{:1_893:}

屁嗝球 发表于 2022-5-10 11:45

看起来应该就是个切片吧。。就是取一系列索引的值。。不是很懂为啥楼上的解释会牵扯上函数和类{:1_908:},也不懂为啥有人说这个比较少用{:1_896:}
报错是因为你定义的x是一维的,不能用二维索引,并且定义的x是列表类型,不能用元组索引
这样应该就不报错了:
import numpy
x = numpy.array([["a123","b234","c345"],["d","e", "f"]])
print(x)

onoffon 发表于 2022-5-10 15:20

屁嗝球 发表于 2022-5-10 11:45
看起来应该就是个切片吧。。就是取一系列索引的值。。不是很懂为啥楼上的解释会牵扯上函数和类, ...

不是切片,切片没有这种用法,看顶楼的红色部分

gzq830510 发表于 2022-5-10 15:40

onoffon 发表于 2022-5-10 15:20
不是切片,切片没有这种用法,看顶楼的红色部分

明明就是ndarray的切片……

onoffon 发表于 2022-5-11 11:04

gzq830510 发表于 2022-5-10 15:40
明明就是ndarray的切片……

感谢你解释,新手,慢慢消化中
页: [1]
查看完整版本: 请教关于一句代码(冒号逗号冒号)的意思