美文网首页
计算机图像cv库

计算机图像cv库

作者: 逢笔生辉 | 来源:发表于2023-11-05 16:58 被阅读0次

[[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的图像,其他的

原图 b g r

从这里对于分离出来的后我们看不出什么变化,但还是可以知道b和r有明显不同

接下来我们尝试使其b加r或r加g

bg相加r为零 g和r相加 br相加

现在 [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的元祖

相关文章

网友评论

      本文标题:计算机图像cv库

      本文链接:https://www.haomeiwen.com/subject/fagzidtx.html