[[10 10 10]
[10 10 10]
[10 10 10]]
[[10 10 10]
[10 10 10]
[10 10 10]]
[[10 10 10]
[10 10 10]
[10 10 10]]
我分别打印了
print(img[1][2:5])
print(img[2][2:5])
print(img[3][2:5])
有三维矩阵,分别表示b g r 的灰度,还可以加上一个为亮度
这里有三个数表示一个像素点,而是三维的,表明三个像素点依次累加。我可以把第一列和其他的组成。这样就变成了black的图像,其他的
![](https://img.haomeiwen.com/i27567275/246cf4a39f15519b.jpg)
![](https://img.haomeiwen.com/i27567275/2d2d101d8fbbf1a3.jpg)
![](https://img.haomeiwen.com/i27567275/06994adcc9f1da67.jpg)
![](https://img.haomeiwen.com/i27567275/4bdef3a3d8afdf55.jpg)
从这里对于分离出来的后我们看不出什么变化,但还是可以知道b和r有明显不同
接下来我们尝试使其b加r或r加g
![](https://img.haomeiwen.com/i27567275/adfd6714a470f45f.jpg)
![](https://img.haomeiwen.com/i27567275/f1db8fd4dfbe889d.jpg)
![](https://img.haomeiwen.com/i27567275/fb24d5bdae243c53.jpg)
现在 [12 12 0 12 0 0]
[12 12 0 12 0 0]
[12 12 0 12 0 0]]]
bgr_6=cv.merge([bg,r,zero,zero])仍然是要用三维表示二维的位置。
上面代码如下
import cv2as cv
import numpyas np
img=cv.imread('192.jpg')
#进行通道分离
print(img[0][2:5])
print(img[1][2:5])
print(img[2][2:5])
print(img[2:5])
b,g,r=cv.split(img)
#创建一个和图像尺寸相同的全0矩阵
zero=np.zeros(img.shape[:2],dtype='uint8')
#将通道数目相同的图像矩阵合并
bg=cv.merge([b,g,zero])
print(bg[2:5])
gr=cv.merge([zero,g,r])
br=cv.merge([b,zero,r])
#将通道数目不同图像矩阵合并加上亮度
bgr6=cv.merge([bg,r,zero,zero])
print(bgr6)
# cv.imshow("blue",bgr6)
cv.waitKey(0)
cv.destoryAllwindows()
像素值由黑到白分为256,寻找灰度最大值的像素,下面来寻找其平均值最大值等
多通道
[[ 1 2]
[ 3 4]]
1 2为1个3,4为另一个
基本上,描述一个像素点,如果是灰度,那么只需要一个数值来描述它,就是单通道。
如果一个像素点,有RGB三种颜色来描述它,就是三通道。(ollydbg23)
图像通道是指图像颜色模式中的一种基本颜色。在RGB颜色模式中,有三个通道:红色、绿色和蓝色。每个通道的值范围是0~255,其中0代表没有该颜色,255代表该颜色最强烈。通过对RGB三个通道的不同组合,可以得到不同的颜色。例如,红色可以表示为(255,0,0),绿色可以表示为(0,255,0),蓝色可以表示为(0,0,255)。
print(list(img.getdata()))# 返回图像所有通道的像素点# [(76, 67, 70), (64, 55, 58), (59, 50, 53), (59, 50, 53), (56, 47, 50) ...]print(list(img.getdata(band=0)))# 返回第一个通道的数值# [76, 64, 59, 59, 56 ...]print(list(img.getdata(band=1)))# 返回第二个通道的数值# [67, 55, 50, 50, 47 ...]print(list(img.getdata(band=2)))# 返回第三个通道的数值# [70, 58, 53, 53, 50 ...]
在寻找坐标时候
[[[11]
[-1]
[ 3]
[ 4]]
[[ 5]
[10]
[ 6]
[ 7]]
[[ 8]
[ 9]
[10]
[ 0]]]
图像中最小为 -1.0 位置为 (1, 0)
图像中最大为 11.0 位置为 (0, 0)
用一列,一列的拼起来从0开始
[[[ 11]
[ -1]
[ 3]
[ -3]]
[[ 5]
[ 10]
[ -5]
[ 7]]
[[ 8]
[ 9]
[ 15]
[-10]]]
import cv2 as cvimport numpy as np# img=cv.imread('192.jpg')#进行通道分离#新建arrayarrayy=np.array([11,-1,3,-3,5,10,-5,7,8,9,15,-10])print(arrayy)#将其调整维度为3 4的单通道图像img1=arrayy.reshape((3,4,1))print(img1)minval_1,maxval_1,minloc_1,maxloc_1=cv.minMaxLoc(img1)#寻找最小值和最大值print("图像中最小为",minval_1,"位置为",minloc_1)print("图像中最大为",maxval_1,"位置为",maxloc_1)img2=arrayy.reshape((3,2,2))#多通道print(img2)img_re=img2.reshape((1,-1))#当我们不知道矩阵中共有多少元素时为-1还是得化为单通道print(img_re)minval_2,maxval_2,minloc_2,maxloc_2=cv.minMaxLoc(img_re)print("图像中最小为",minval_2,"位置为",minloc_2)print("图像中最大为",maxval_2,"位置为",maxloc_2)
2求图像的均值和标准差,均值越大,图像整体越亮求取图像的对应每个通道的均值,将计算结果存放到一个长度为4的元祖
网友评论