opencv的图像基本操作(基于jupyter Notebook)

opencv的基本操作

cv2是opencv在python中的缩写,函数开头用cv2

cv2.imread('cat.jpg') #读入图片cat.jpg

cv2.imwrite('mycat.png',img) #图片img保存为mycat.png

cv2.imshow('image',img) #创建窗口,显示图像

cv2.waitKey(10000) #等待时间,以 毫秒为单位,“0”表示任意键中止

cv2.destroyAllWindows()

img.shape #查看img的尺寸

- cv2.IMREAD_COLOR:彩色图像

- cv2.IMREAD_GRAYSCALE:灰度图像

img=cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE) #读入cat.jpg灰色图像,存到img

img.size #图片img的尺寸

读取视频 cv2.VideoCapture('test.mp4')

vc = cv2.VideoCapture('test.mp4') #读取视频test.mp4到vc

cat = img[0:200,0:200] #截取图片img,0:200,0:200

b,g,r = cv2.split(img) #img图片提取为b,g,r三个颜色通道

img = cv2.merge((b,g,r)) #(b,g,r)三个颜色通道合成图片image

#只保留r通道,cur_img[:,:,0]的格式

cur_img = img.copy() #复制img到cur_img

cur_img[:,:,0] = 0 #图片cur_img的b通道为0

cur_img[:,:,1] = 0 #图片cur_img的g通道为0

cv_show('img',cur_img) #显示只保留r通道的图片cur_img

下面图形包含六幅猫,如何将六幅图合并到一起展示呢?

使用subplot()绘制图形

opencv的图像基本操作(基于jupyter Notebook)_第1张图片

subplot(numRows, numCols, numPlots)

图形划分成numRows行,numCols列;上图为2行3列,numRows=2,numCols=3;

左上角编号从1开始,从左到右,从上到下依次编号

numPlots是你要绘制子图的编号;

subplot(2, 3, 3)

图片坐标为 (1,1),(1,2),(1,3)

(2,1),(2,2),(2,3)

要绘制2行3列的图形,要绘制的图形编号为3,坐标为(1,3),是图REFLECT。

【注意】如果numRows, numCols, numPlots这三个数字都小于10,可以缩写为一个整体。

【例子】subplot(231)和subplot(2,3,1)相同

图像运算

两个图形shape值相同才能运算,使用resize()调整图像shape相同。

img_cat2 = img_cat + 10 #在img_cat图像上+10,表示所有像素点亮度值加10

img_cat2[:5, :, 0] #显示img_cat2,“:5”指前5行,中间的“:”是所有列,“0”是第一个通道

(img_cat + img_cat2)[:5, :, 0] #相当于%256

cv2.add(img_cat, img_cat2)[:5, :, 0] #img_cat+img_cat2,像素点数值超过255,取255

图像变换

img_dog = cv2.resize(img_dog, (500, 414)) # img_dog图像尺寸转换为(414,500)

res = cv2.addWeighted(img_cat, 0.4, img_dog, 0.5, 0) #img_cat和 img_dog加权相加

res = cv2.resize(img_cat, (0,0), fx = 3, fy = 4) #图像伸缩变换,x变为3倍,y变为4倍

res = cv2.resize(img_cat, (0,0), fx = 1, fy =3) #x是1倍,y是3倍

【注意】

  1. notebook中shift+Enter执行代码

  1. 输入法英文输入状态,写代码,字符单引号'',字符串双引号"",括号()

输入法汉字输入状态,写注释,字符串的内容"XXXX"

你可能感兴趣的:(计算机视觉,python,opencv,计算机视觉)