zoukankan      html  css  js  c++  java
  • 第二个内容第一天 opencv的基本内容:

    1.使用opencv显示一个图片界面:

    import cv2  
    img=cv2.imread('D:\xusir.jpg') #进行图片的读取
    cv2.imshow('xusir',img) #进行图片的显示
    cv2.waitKey(0)  #设置图片展示的时间
    cv2.destroyAllwindows() #江窗口文件阱行销毁
    View Code

      1.1在上面程序中我们需要注意的是:使用imread时如果读取二值图像或者是灰度图像时后面要加上第二个物理量:IMREAD_UNCHANGED;

      1.2 在上述程序中如果想要给展示的图片进行时间设定则需要在括号里输入大于0的数字,如果输入为0则默认为无线等待 输入值小于0则等待键盘敲击。

    2.使用opencv进行图像的保存:

    cv2.imwrite('D:\wusir.jpg',img)#进行图片的保存
    View Code

    3.图像主要分为三种:二值图像、灰度图像、rgb图像:

      3.1二值图像:图片的像素值:要么是0要么是1  属于单通道

      3.2  灰度图像:图像的像素值:从0到255 属于单通道:

    ·  3.3在opencv中,图像的读取和写入顺序和我们平时所接触到的正好想反:是bgr:值得范围也是从0到255;属于三通道

    4.进行图像像素的读取:

      4.1返回值=图像.(位置参数)

        1.灰度图像的值读取:

    import cv2  
    img=cv2.imread('D:cc1lena256.bmp',cv2.IMREAD_UNCHANGED) #进行图片的读取
    b=img[11,33]# 读取灰度图像的像素值
    print(b)
    结果为
    runfile('C:/Users/OYMK/untitled0.py', wdir='C:/Users/OYMK')
    89
    View Code

         2.bgr图像值的获取和修改:

    import cv2  
    img=cv2.imread('D:cc1lena.bmp',cv2.IMREAD_UNCHANGED) #进行图片的读取
    b=img[11,33,0]# 读取灰度图像的像素值
    img[11,33]=255
    print(img[11,33])
    print(b)
    View Code

      4.2进心灰度图像值的修改:

    import cv2  
    img=cv2.imread('D:cc1lena256.bmp',cv2.IMREAD_UNCHANGED) #进行图片的读取
    b=img[11,33]# 读取灰度图像的像素值
    img[11,33]=255
    print(img[11,33])
    print(b)
    结果为
    n [20]: runfile('C:/Users/OYMK/untitled0.py', wdir='C:/Users/OYMK')
    255
    89
    View Code

      4.3如果想要图像某个范围内的像素值都改成统一的数值:

    import cv2  
    img=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED) #进行图片的读取
    img[100:130,100:130]=[255,255,255]# 将图片某一范围内的像素设置成某一个值
    cv2.imshow('lenacolor',img) #进行图片的显示
    cv2.imwrite('D:	est.png',img) #进行图片的写入
    cv2.waitKey(0)
    cv2.destroyAllwindows()
    View Code

    5.第二种读取像素的方法:

      返回值=图像.item(位置参数)

      1.1灰度图像

    import cv2  
    img=cv2.imread('D:cc1lena256.bmp',cv2.IMREAD_UNCHANGED) #进行图片的读取
    b=img.item(11,33)
    print(b)
    结果为
    Users/OYMK')
    89
    View Code

      1.2bgr图像:

    import cv2  
    img=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED) #进行图片的读取
    print(img.item(111,111,0))
    View Code

      2.进行值的修改:图像.itemset(位置参数,新值)

    import cv2  
    img=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED) #进行图片的读取
    print(img.item(11,33,0))
    img.itemset((11,33,0),255)
    print(img.item(11,33,0))
    View Code

    6.获取图像的大小:shape及获取图像的行数、列数、通道数:

    import cv2  
    img=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED) #进行图片的读取
    print(img.shape)
    (512, 512, 3)
    View Code

    7.获取图像的像素数目(即图像的大小):

    import cv2  
    img=cv2.imread('D:cc1lena256.bmp',cv2.IMREAD_UNCHANGED) #进行图片的读取
    print(img.shape)
    print(img.size)
    结果为
    (256, 256)
    65536
    View Code

    8.获取图像的类型:dtype

    import cv2  
    img=cv2.imread('D:cc1lena256.bmp',cv2.IMREAD_UNCHANGED) #进行图片的读取
    img1=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED)
    print(img.dtype)
    print(img.size)
    print(img1.size)
    print(img.dtype)
    
    结果为
    uint8
    65536
    786432
    uint8
    View Code

    9.图像的ROI

      就是取出图像某一范围的像素放到另一张图片上或者这张图片的另一个位置上:

    import cv2  
    img=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED) #进行图片的读取
    img1=cv2.imread('D:cc1girl.bmp',cv2.IMREAD_UNCHANGED)
    face=img[200:400,200:400]
    print(img.shape)
    img1[100:300,100:300]=face
    cv2.imshow('changed',img1)
    cv2.waitKey(0)
    cv2.destroyAllwindows()
    View Code
    import cv2
    import numpy as np
    img=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED)
    face=np.ones((200,200,3))
    print(img.shape)
    face=img[200:400,200:400]
    cv2.imshow('new',face)
    cv2.waitKey(-5)
    cv2.destroyAllWindows()
    View Code

    10将彩色图像进行颜色的分割:split

      1split

    import cv2
    import numpy as np
    img=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED)
    b,g,r=cv2.split(img)
    cv2.imshow('b',b)
    cv2.imshow('g',g)
    cv2.imshow('r',r)
    cv2.waitKey(-1)
    cv2.destroyAllWindows()
    View Code

      2.将分割的结果进行拆分:

    import cv2
    import numpy as np
    img=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED)
    b=cv2.split(img)[0]
    g=cv2.split(img)[1]
    r=cv2.split(img)[2]
    cv2.imshow('b',b)
    cv2.imshow('g',g)
    cv2.imshow('r',r)
    cv2.waitKey(-1)
    cv2.destroyAllWindows()
    View Code

    11.将分割的像素进行整合:merger(在进行整合的时候一定要注意顺序 :bgr)

    import cv2
    import numpy as np
    img=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED)
    b=cv2.split(img)[0]
    g=cv2.split(img)[1]
    r=cv2.split(img)[2]
    color=cv2.merge([b,g,r])
    cv2.imshow('b',b)
    cv2.imshow('g',g)
    cv2.imshow('r',r)
    cv2.imshow('merge',color)
    cv2.waitKey(-1)
    cv2.destroyAllWindows()
    View Code

    12.合并的案列:

    import cv2
    import numpy as np
    img=cv2.imread('D:cc1lenacolor.png',cv2.IMREAD_UNCHANGED)
    rows,cols,chan1=img.shape
    b=np.zeros((rows,cols),img.dtype)
    g=cv2.split(img)[1]
    r=np.zeros((rows,cols),img.dtype)
    color=cv2.merge([b,g,r])
    cv2.imshow('merge',color)
    cv2.waitKey(-1)
    cv2.destroyAllWindows()
    View Code

     13.图像的加法运算:(图像的大小和类型必须相同)

      1.numpy加法运算: 新图像=图像1+图像2   新图像的像素值采取取模值:即1.当两个图像的像素值相加小于255时,取两个图像像素相加的值,如果超过255

    则对相加的结果除以255取余。列(255+34)%255=34

    import cv2
    import numpy as np
    img=cv2.imread('D:\cc1\lena256.bmp',cv2.IMREAD_UNCHANGED)
    img1=img
    img_new=img1+img
    cv2.imshow('old',img)
    cv2.imshow('new',img_new)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    View Code

      2.opencv中的加法运算:新图像=cv2.add(图像1,图像2)运算规则是:即1.当两个图像的像素值相加小于255时,取两个图像像素相加的值,如果超过255

    则值取255

    import cv2
    import numpy as np
    img=cv2.imread('D:\cc1\lena256.bmp',cv2.IMREAD_UNCHANGED)
    img1=img
    img_new=cv2.add(img1,img)
    cv2.imshow('old',img)
    cv2.imshow('new',img_new)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    View Code

    14图像的融合:即将两张即两张以上的图像融合成一张图片:(图片的大小要一样)

      1.图像融合的算法:  cv2.addweighted( src1,alpah,src2,beta,gamma) 计算规则:dst=src1*alpha+src2*beta+gamma(参数gamma不能省略)

    import cv2
    import numpy as np
    img=cv2.imread('D:\cc1\girl.bmp',cv2.IMREAD_UNCHANGED)
    img1=cv2.imread("D:\cc1\girl.bmp",cv2.IMREAD_UNCHANGED)
    
    img_new=cv2.addWeighted(img,1,img1,1,0)
    
    cv2.imshow('old',img)
    cv2.imshow('new',img_new)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    View Code

       

     

     

  • 相关阅读:
    vue学习(五) 访问vue内部元素或者方法
    vue学习(四) v-on:事件绑定
    vue学习(三) v-bind指令
    vue学习(二) 三个指令v-cloak v-text v-html
    vue学习(一)初步了解 vue实例
    Restful 接口开发 完整版
    解决exlipse下 springboot 错误:找不到或无法加载主类
    一张图看懂 SQL 的各种 join 用法
    Rest分页接口开发
    浅谈rest風格的接口开发
  • 原文地址:https://www.cnblogs.com/ab461087603/p/12679651.html
Copyright © 2011-2022 走看看