opencv的灰度变换使用及与自己实现的效果比较

本来想做Hough的,结果在灰度上就有疑问。

根据网上的资料,灰度变换有几种:1、0.299,0.587,0.114对应rgb的权重。

2、直接平均

做了下,自己全黑。后来发现有两个原因:1、溢出。原图像的数组是uint8的类型,默认数组的类型是float64(好一个坑。。。),三个数相加超过了255

2、imshow只能显示uint8,我强制转换的int不行,变换后新图像的float64类型不行。

改正后好了,代码如下:

import cv2
import numpy as np
pic=cv2.imread("C:\\Users\\acer\\Pictures\\book.jpg")
pic_float=pic.astype(np.float)
pic1=cv2.cvtColor(pic, cv2.COLOR_RGB2GRAY)
cv2.imshow("GRAY",pic1)
x=pic.shape[0]
y=pic.shape[1]

pic2=np.zeros((x,y))
for i in range(x):
    for j in range(y):
        pic2[i][j]=(299*pic_float[i][j][2]+587*pic_float[i][j][1]+114*pic_float[i][j][0])/1000
pic2=pic2.astype(np.uint8) 

cv2.imshow("MY_GRAY",pic2)
cv2.imshow("MINUS",pic1-pic2)
最后一行是作比较用的。图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值