关于李宗立老师的《Opencv轻松入门面向python》书中的几处错误(2023.03.05看的19版)

一、55页表 3-12中第一行,第四列的内容:“第五位”。我觉得应该是“第四位”

14de26d7d6d24b5eb8be286dcd50ece6.jpg

 二、原书第176页第8行,“element代表膨胀操作所采用的结构类型......”中的“element”应该为“kernel”。

因为前几页提到腐蚀操作的参数也是“kernel”,加上本膨胀函数里也并没有“element”这个参数量。

3bb74b4d565844be9ea90b5efa009971.jpg

三、本书的第213页,倒数第二行的“

edges=cv.Canny(image,thresold......)

应为

edges=cv2.Canny(image,thresold......)

从书的开始调用opencv库便用"cv2.",此处却”cv.“,所以改成“cv2.”更严谨。20defcdb953d42f78c4fb6a4cddfc967.jpg

 四、原书第12章例12.10,即第253页的“使用函数cv2.matchShape()计算三副不同图像的匹配度”,在例子的输出中出现了254页图12-15的三副原始图像,但是原书程序代码中并未出现cv2.imshow()及其他输出图像的函数语句。

  原文(253页倒数第四行):“运行上述程序,会显示三幅原始图像,如图12-15所示”。除此外输出正常,会出现原始图像的shape属性及图像对比度。

18172f1d09e240a59a4e89ac1630bcb2.jpg

五、第12章图像轮廓的12.4.5,即261页表12-2解释“distType”参数含义的表;表中的第6行右侧,“distance=2(sqrt(1+x*x/2)-1))”应改为“distance=2(sqrt(1+x*x/2)-1)”。即后边多了个括号“)”f12b77f9effb40d0957b02a09af84699.jpg

 六、原书第262页,12.4.6最小外包三角形的例12.18“使用函数cv2.minEnclosingTriangle()构造最小外包三角形”中使用到函数cv2.line()。由于cv2.line()中的参数pt1,pt2要求不能是浮点数,所以按照一般灰度图像套用此例子的代码会报错(本人使用的python编译环境是pycharm),报错提示如下:

cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'line'
> Overload resolution failed:
>  - Can't parse 'pt1'. Sequence item with index 0 has a wrong type
>  - Can't parse 'pt1'. Sequence item with index 0 has a wrong type

易知,报错原因出现在cv2.line()函数的参数"pt1"和"pt2"的类型上。

解决办法:将原书中的代码:

for i in range(0,3):
    cv2.line(o,tuple(trgl[i][0]),
             tuple(trgl[(i+1)%3][0]),(255,255,255),2)

     改为

for i in range(0,3):
    cv2.line(o,tuple((trgl[i][0]).astype(int)),
             tuple((trgl[(i+1)%3][0]).astype(int)),(255,255,255),2)

  即通过astype函数强制转换为int类型。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值