第二个内容第一天 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:\cc1\lena256.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:\cc1\lena.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:\cc1\lena256.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:\cc1\lenacolor.png',cv2.IMREAD_UNCHANGED) #进行图片的读取
img[100:130,100:130]=[255,255,255]# 将图片某一范围内的像素设置成某一个值
cv2.imshow('lenacolor',img) #进行图片的显示
cv2.imwrite('D:\test.png',img) #进行图片的写入
cv2.waitKey(0)
cv2.destroyAllwindows()
View Code

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

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

  1.1灰度图像

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

  1.2bgr图像:

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

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

import cv2  
img=cv2.imread('D:\cc1\lenacolor.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:\cc1\lenacolor.png',cv2.IMREAD_UNCHANGED) #进行图片的读取
print(img.shape)
(512, 512, 3)
View Code

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

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

8.获取图像的类型:dtype

import cv2  
img=cv2.imread('D:\cc1\lena256.bmp',cv2.IMREAD_UNCHANGED) #进行图片的读取
img1=cv2.imread('D:\cc1\lenacolor.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:\cc1\lenacolor.png',cv2.IMREAD_UNCHANGED) #进行图片的读取
img1=cv2.imread('D:\cc1\girl.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:\cc1\lenacolor.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:\cc1\lenacolor.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:\cc1\lenacolor.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:\cc1\lenacolor.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:\cc1\lenacolor.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

 

 

   

 

 

 

 

 

posted @ 2020-04-11 14:53  chown  阅读(164)  评论(0编辑  收藏  举报