代码
import cv2 as cv
import numpy as np
src = cv.imread('./0.jpg', cv.IMREAD_COLOR)
cv.namedWindow('rawPicture', cv.WINDOW_AUTOSIZE)
cv.imshow('rawPicture', src)
temp = np.copy(src)
cv.imshow('temp', temp)
temp2 = src
src[0:400, 200:300, :] = 255
cv.imshow('temp2', temp2)
temp3 = np.zeros(src.shape, src.dtype)
cv.imshow('temp3', temp3)
temp4 = np.zeros([512, 512], np.uint8)
cv.imshow('temp4', temp4)
temp5 = np.ones(shape=[512, 512])
cv.imshow('temp5', temp5)
cv.waitKey(0)
cv.destroyAllWindows()
实验结果
解释
temp2 = src
src[0:400, 200:300, :] = 255
cv.imshow('temp2', temp2)
上图中temp2
中有一块图像变成白色的了,是因为在python中,直接赋值语句只是一种引用(相当于c语言中的指针),并没有真的在内存中开辟新的内存空间。也就是说,temp2与src指向内存中相同的位置。
另外,在图像数据中:把白色与黑色之间按对数关系分成若干级,称为“灰度等级”。范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像,注意与二值图像的区别,二值图像的灰度值只有0和1两种。
课外拓展:
彩色图象的灰度其实在转化为黑白图像后的像素值(是一种广义的提法),转化的方法看应用的领域而定,一般按加权的方法转换,R, G,B 的比一般为3:6:1。
任何颜色都由红、绿、蓝三基色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:
1.浮点算法:Gray=R0.3+G0.59+B0.11
2.整数方法:Gray=(R30+G59+B11)/100
3.移位方法:Gray =(R77+G151+B*28)>>8;
4.平均值法:Gray=(R+G+B)/3;
5.仅取绿色:Gray=G;
通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。