opencvpython 段力辉是哪本书_OpenCV-Python我刚写六行代码就出了个惊天BUG

原标题:OpenCV-Python我刚写六行代码就出了个惊天BUG

微信公众号:OpenCV学堂

关注获取更多计算机视觉与深度学习知识

引子

最近一直在用PyQT跟python-opencv做开发,正好需要固定阈值二值化,于是我就随手写下了如下的代码片段:

image[image > t] = maxval

image[image < =t] = 0

这波常规操作我给自己满分,后来别人跟我说可以根据阈值反向分割,就是大于阈值T赋值为0,小于阈值T赋值为maxval于是,我就给它加了个if else操作,代码如下:

ifbin_type == 0:

image[image > t] = maxval

image[image <= t] = 0

else:

image[image > t] = 0

image[image <= t] = 255

感觉这代码写的满分,于是我调试的时候,输入一张灰度图像,只要我选择bin_type=0总是正确执行二值化,只要我输入bin_type=1就一片白色。我测试了几张图像之后感觉有点怀疑人生了,逻辑这么好的代码,居然不正确执行!

真相让我崩溃

这个问题当时让好郁闷,感觉自己智商出问题了!于是我就手动写下了如下代码:

test = np.zeros(( 8, 8), dtype=np.uint8)

fori inrange( 8):

test[i, 0] = i * 32

test[i, 1] = i * 32

test[i, 2] = i * 32

test[i, 3] = i * 32

test[i, 4] = i * 32

test[i, 5] = i * 32

test[i, 6] = i * 32

test[i, 7] = i * 32

print(test)

test[test > 122.2335] = 0

print( "output1n",test)

test[test <= 122.2335] = 255

print( "output2n", test)

打印输出结果:

48700438bf8864aa823165be041ba0eb.png

我终于破案了!

原来我第一次赋值image[image>T] = 0时候导致没有大于T的了,然后再执行image[image

天下难事,必作于易

天下大事,必作于细返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值