小白opencv的入门处理技巧
在这里插入代码片
@TOC**
在这里插入代码片
import cv2
import numpy as np
#i=cv2.imread("D:\\TP\\MT1.jfif",CV2.IMREAD_UNCHANGED) #读入图像并取名
#CV2.imshow("demo",i) #显示文件,demo是显示窗口名
#cv2.waitKey(-1) #显示文件等待时间,参数=0,无线等待;参数<0,等待键盘单击;参数>0,等待给定的毫秒
#cv2.destroyAllWindows() #删除所有的窗口
##########修改像素值########
#1.图像以灰度形式取出,提取像素的灰度值
#cv2.imwrite("D:\\TP\\MT2.jpg",i) #保存文件,i是图像名字,‘D\\TP\\MT2是路径名
#i=cv2.imread("D:\\TP\\MT1.jfif",cv2.IMREAD_GRAYSCALE) #读入图像并取名,是灰色图形
#print(p) #打印像素点的灰度值或者BGR
#i[200,200]=120 #修改灰度值
#print(i[200,200]) #输出修改后的灰度值
#2.图像以bgr形式取出,提取像素点的bgr值
#i=cv2.imread("D:\\TP\\MT2.jfif",cv2.IMREAD_UNCHANGED)
#i[100,100,0]=100 #【100,100】像素点的b通道的值改为100. 0-b通道。1-g通道。2-r通道
#p=i[100,100] #图像第100行,100列像素点的像素值
#print(p) #打印第一百行,一百列的像素点的像素值
#i[100,200]=[250,250,250] #修改第100行,200列的像素点的b通道值改为250,g通道改为250,r通道改为250
#i=[100,200]
#print(i)
#2.范围修改
#i=cv2.imread("D:\\TP\\MT1.jfif")
# cv2.imshow('original',i)
# i[50:100,100:200]=[100,200,100] #将制定范围(50:100,100:200)的bgr值修改为【100.200.100】
# cv2.imshow('original2',i)
# cv2.waitKey(-1)
# cv2.destroyAllWindows()
#
##########numpy处理图像##########
# import cv2
# import numpy as np
# # i=cv2.imread("D:\\TP\\MT1.jfif",cv2.IMREAD_UNCHANGED) #读入文件,彩色模式
# print(i.item(100,100,0)) #输出100行,100列像素点0通道的值
# i.itemset((100,100,0),255) #修改100行,100列像素点0通道的值为255
# print(i.item(100,100,0)) #输出修改后0通道的值
# print(i.item(100,100,1)) #输出100行,100列1通道的值
# i.itemset((100,100,1),255) #修改1通道的值为255
# print(i.item(100,100,1)) #输出修改后的值
# print(i.item(100,100,2)) #输出100行,100列2通道的值
# i.itemset((100,100,2),255) #修改2通道的值
# print(i.item(100,100,2)) #输出修改后的2通道的值
############获取图像的属性##########
#import cv2
# img1=cv2.imread("D:\\TP\\MT1.jfif",cv2.IMREAD_GRAYSCALE) #读取灰色图像
# img2=cv2.imread("D:\\TP\\MT2.jfif") #读取彩色图像
# print(img1.shape) #shape获取图像的形状,返回行,列,通道的元组,若为灰度图像则返回行列数
# print(img1.size) #size获取图像的像素数目,灰度图则行*列,彩色图像返回行*列*通道
# print(img1.dtype) #dtype返回每个像素点的数据类型
#
# print(img2.shape) #shape可获取图像的属性,返回行,列,通道的元组
# print(img2.size) #size获取图像的像素数目,彩色图返回行*列*通道,灰度图则返回行*列
# print(img2.dtype) #dtype返回像素点的数据类型
#########图像roi(region if interest 图像感兴趣区域)
#从被处理的图像以方框,椭圆之类的形状勾勒出所需要得到处理的区域
#通过各种算法(operator)和函数来求感兴趣区域的roi,并对图像进行下一步处理
#########同一图像的复制
# import cv2
# import numpy as np
# a=cv2.imread("D:\\TP\\MT2.jfif")
# face=np.ones((101,101,3)) #创建101行*101列图像,3通道
# cv2.imshow("a",a) #显示图像a
# face=a[220:400,230:350] #提取a图像的感兴趣区域赋值给face
# a[0:180,0:120]=face
# cv2.imshow('face',face)
# cv2.imshow('result',a)
# cv2.waitKey()
# cv2.destroyAllWindows()
############不同图像的复制
# a=cv2.imread("D:\\TP\\MT1.jfif") #读取彩色图像
# b=cv2.imread("D:\\TP\\MT2.jfif") #读取彩色图像
# face=np.ones((101,101,3)) #创建一个感兴趣区域,101列,101行,3通道
# cv2.imshow('qwe',a) #显示a图片
# cv2.imshow('qwe2',b) #显示图片b
# cv2.imshow('face',face) #显示创建的空白图片face
# face=a[200:300,250:350] #提取图片a中感兴趣区域赋值给face
# b[40:140,100:200]=face #将感兴趣的区域赋给图片b
# cv2.imshow('result',b) #显示最终的结果
# cv2.waitKey(-1)
# cv2.destroyAllWindows()
# cv2.imshow('face',b) #显示b区域
# cv2.waitKey(-1)
# cv2.destroyAllWindows()
# face=img1[500:700,200:400] #通过下标方式选取
# img1[600:800,400:600]=face #将face区域复制到指定区域【200:400,300:500】
# cv2.imshow('result',i)
# cv2.waitKey(-1)
# cv2.destroyAllWindows()
###############通道的拆分与合并##########33
#通道的拆分1
a=cv2.imread("D:\\TP\\MT2.jfif",cv2.IMREAD_UNCHANGED)
b,g,r=cv2.split(a)
cv2.imshow('b',b)
cv2.imshow('g',g)
cv2.imshow('r',r)
cv2.waitKey()
cv2.destroyAllWindows()
#通道的拆分2
# a=cv2.imread("D:\\TP\\MT2.jfif")
# b=cv2.split(a)[0]
# g=cv2.split(a)[1]
# r=cv2.split(a)[2]
# cv2.imshow('B',b)
# cv2.waitKey()
# cv2.destroyAllWindows()
#图像的合并
#原通道的合并
import cv2
import numpy as np
# a=cv2.imread("D:\\TP\\MT1.jfif")
# b,g,r=cv2.split(a)
# bgr=cv2.merge([b,g,r])
# rgb=cv2.merge([r,g,b])
# cv2.imshow('bgr',bgr)
# cv2.imshow('rgb',rgb)
# cv2.waitKey()
# cv2.destroyAllWindows()
##单通道与双通道的合并
##b通道与其他两个通道的合并
# a=cv2.imread("D:\\TP\\MT2.jfif")
# rows,cols,chn=a.shape
# b=cv2.split(a)[0]
# g=np.zeros((rows,cols),dtype=a.dtype)
# r=np.zeros((rows,cols),dtype=a.dtype)
# m=cv2.merge([b,g,r])
# cv2.imshow('B-merge',m)
# cv2.waitKey()
# cv2.destroyAllWindows()
##g通道与其他两个通道的合并
# a=cv2.imread("D:\\TP\\MT2.jfif")
# rows,cols,chn=a.shape
# b=np.zeros((rows,cols),dtype=a.dtype)
# g=cv2.split(a)[1]
# r=np.zeros((rows,cols),dtype=a.dtype)
# m=cv2.merge([b,g,r])
# cv2.imshow('g-merge',m)
# cv2.waitKey()
# cv2.destroyAllWindows()
##r通道与其他两个通道的合并
# a=cv2.imread("D:\\TP\\MT2.jfif")
# rows,cols,chn=a.shape
# b=np.zeros((rows,cols),dtype=a.dtype)
# g=np.zeros((rows,cols),dtype=a.dtype)
# r=cv2.split(a)[2]
# m=cv2.merge([b,g,r])
# cv2.imshow('r-merge',m)
# cv2.waitKey()
# cv2.destroyAllWindows()
以上就是opencv简单的操作了,后面还会继续进行讲解,里面的都不太难,就是需要大量的练习。