美文网首页
计算机图像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