python入门opencv
程序员文章站
2024-03-25 19:13:22
...
文章目录
第1章 opencv基础操作
1.用窗口显示图片
(一)先用此cv2.namedwindow()创建一个窗口,再用cv2.imshow()显示
(二)直接用cv2.imshow()创建一个新窗口显示。
`
*=cv2.imread('/home/mally/图片/2.png',0)
cv2.namedWindow("way1")
cv2.imshow('way1',a)
//1表示3通道的RGB图象
b=cv2.imread('/home/mally/图片/2.png',1)
cv2.imshow('way2',b)
cv2.waitKey()
2.使用cv2.waitkey()的交互功能.
输入a时出现图a,输入b时出现图b
ord 获取某字符的ASCII
import cv2
a=cv2.imread('/home/mally/图片/2.png',-1)
b=cv2.imread('/home/mally/图片/2.png',1)
cv2.imshow('at the beginning',b)
key=cv2.waitKey()
if key==ord('a'):
cv2.imshow('way1', a)
cv2.imshow('press a',a)
elif key==ord('b'):
cv2.imshow('press b',b)
cv2.waitKey()
3.保存图片到当前目录下
import cv2
a=cv2.imread('/home/mally/图片/3.jpeg',1)
cv2.imwrite("3.png",a)
第2章 图象处理基础
1.使用numpy库生成数组,以模拟图象
zeros()生成元素都是0的数组
import cv2
import numpy as np
img = np.zeros((8,8),dtype=np.uint8)
#生成8*8的二维数组,数值类型都是np.uint8
print("img=\n",img)
cv2.imshow("before",img)
print("读取像素点img[0,3]=",img[0,3])
img[0,3]=255
print("修改后 img=\n",img)
print("读取修改后像素点img[0,3]=",img[0,3])
cv2.imshow("after",img)
cv2.waitKey()
cv2.destroyAllWindows()
2.RGB
RGB模式的图像有3个通道,
[:,:,0]是blue,[:,:,1]是green,[:,:,2]是red
import cv2
import numpy as np
a=np.zeros((300,300,3),dtype=np.uint8)
a[:,:,1]=255
print("a=",a)
cv2.imshow("green",a)
cv2.waitKey()
3.使用numpy.array访问像素
(1). 使用item()比直接索引高效
(2).使用 itemset()修改像素值更高效
(3).random.randint 可以生成一个随机数组。
np.random.randit(n1,n2,size=[a,b],dtype=?)
其中随机数范围为[n1,n2]
import cv2
import numpy as np
img=np.random.randint(10,100,size=[5,5],dtype=np.uint8)
print(img)
cv2.imshow("before",img)
print("img.item(3,2)=",img.item(3,2))
img.itemset((3,2),255)
print(img)
cv2.imshow("after",img)
cv2.waitKey()
4.ROI
即感兴趣区域(Region of Interest)
如给lena的face打马赛克mosaic
import cv2
import numpy as np
a=cv2.imread("5.jpeg")
face=a[100:180,90:200]
cv2.imshow("lena",a)
cv2.imshow("face",face)
face=np.random.randint(0,256,(80,110,3))
a[100:180,90:200]=face
cv2.imshow("make mosaic",a)
cv2.waitKey()
效果如下图
5.通道操作
拆分图像通道 cv2.split()
合并图像通道 cv2.merge()
6.获取图像属性
shape 返回行数,列数,通道数
size 返回图像的像素数目
dtype返回图像的数据类型
import cv2
img=cv2.imread("5.jpeg")
print("img.shape=",img.shape)
print("img.size=",img.size)
print("img.dtype",img.dtype)
cv2.waitKey()