吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1196|回复: 8
收起左侧

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

[复制链接]
onoffon 发表于 2022-5-10 08:42
本帖最后由 onoffon 于 2022-5-10 08:44 编辑

看到一个函数
[Python] 纯文本查看 复制代码
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[start_y:start_y+100, start_x:start_x+100]
            match = cv2.matchTemplate(grayB, window, cv2.TM_CCOEFF_NORMED)
            _, _, _, max_loc = cv2.minMaxLoc(match)
            [color=Black]matched_window = grayB[max_loc[1]:max_loc[1]+100, max_loc[0]:max_loc[0]+100][/color][b][color=Red] [/color][/b]   #[ :  ,  : ] 为什么能这样表达
            result = cv2.absdiff(window, matched_window)
           [color=Red]result_window[start_y:start_y+100, start_x:start_x+100] = result[/color]

    plt.imshow(result_window)
    plt.show() 


matched_window = grayB[max_loc[1]:max_loc[1]+100, max_loc[0]:max_loc[0]+100]

result_window[start_y:start_y+100, start_x:start_x+100] = result

红色那两句,列表中 [ : , : ] 这种表达方式是什么意思,为什么能有这种方式?如果这样:
x = ["a123","b234","c345","d","e", "f"]
print(x[1:2, 4:5])
则会报错?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lazycat6833 发表于 2022-5-10 09:08
逗号间隔的是参数,意思就是 参数一,参数二
至于冒号,你可以理解为 类的内部方法
函数(类1:方法1的值, 类2:方法1的值)  这是给函数传入了2个参数, 而每个参数调用了其他类里面的方法获取的值
海是倒过来的天 发表于 2022-5-10 09:39
这个应该编程基础里面有说,但比较少用。。楼上的解释不错
zxc9989 发表于 2022-5-10 09:43
x[1:2, 4:5]
本质上是调用x.__getitem__((slice(1, 2, None), slice(4, 5, None)))
传入的是一个元组, list对象本身并不支持传入元组的操作。
红色的可行是numpy对传入元组做了扩展
 楼主| onoffon 发表于 2022-5-10 09:54
感谢楼上几位的解答!
屁嗝球 发表于 2022-5-10 11:45
看起来应该就是个切片吧。。就是取一系列索引的值。。不是很懂为啥楼上的解释会牵扯上函数和类,也不懂为啥有人说这个比较少用
报错是因为你定义的x是一维的,不能用二维索引,并且定义的x是列表类型,不能用元组索引
这样应该就不报错了:
[Python] 纯文本查看 复制代码
import numpy
x = numpy.array([["a123","b234","c345"],["d","e", "f"]])
print(x[1:2, 0:3])
 楼主| 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的切片……

感谢你解释,新手,慢慢消化中
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表