1.读取并显示图像

opencv 支持读取bmp,jpg,png,tiff等常用格式

import cv2

img=cv2.imread(“D:\cat.jpg”)

cv2.imshow(“Image”,img) #在窗口中显示图像

cv2.waitKey(0) #如不添加这句,在IDLE中执行窗口直接无响应

cv2.destroyAllWindows() #最后释放窗口

2.创建复制图像

opencv接口中没有CreateImage接口,故若要创建对象则要作用numpy函数。

emptyImage=np.zeros(img.shape,np.uint8)

或者复制原来的图像来创建对象

emptyImage2=img.copy()

或者用cvtColor获得原图像的副本

emptyImage3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #将原来图像的RGB转换成Gray,因为opencv中RGB是倒过来的写的

cv2.COLOR_BGR2GRAY #BGR图像转换为灰度图像

cv2.COLOR_BGR2RGB #BGR格式图像转换为RGB格式图像

cv2.COLOR_GRAY2BGR #灰度图像转换成BGR图像

3.保存图像

输入文件名和待保存对象即可,函数imwrite()会根据文件后缀自动转换图像

cv2.imwrite(“D:\cat2.jpg”,img) #将处理好的img为图像矩阵存为cat2.jpg

cv2.imwrite(“./cat.png”,img,[int(cv2.IMWRIGE_PNG_COMPRESSION),9]) #IMWRIGE_PNG_COMPRESSION 此参数表示的是压缩级别,从0-9,压缩级别越高,图像尺寸越小,默认级别为3

cv2.imwrite(“D:\cat2.jpg”,img,[int(cv2.IMWRITE_JPEG_QUALITY),5]) #cv2.IMWRITE_JPEG_QUALITY为long,必须转换成int,它表示的是图像的质量,用0-100的整数表示

4.opencv基本函数功能

reasize()实现放大缩小,声明如下:

cv2.resize(src,dsize[,dst[fx,fy],interpolation])

eg:img_ex = cv2.resize(img, (2*cols, 2*rows), interpolation=cv2.INTER_CUBIC) #放大2倍,2*cols,2*row

img_zo = cv2.resize(img, (cols/2, rows/2), interpolation=cv2.INTER_AREA) #缩小为原来的一半

img_zo = cv2.resize(img, (cols/2, rows/2), interpolation=cv2.INTER_AREA)

opencv读取彩色图像 opencv读取png_opencv读取彩色图像


平移可以由平移矩阵描述:

opencv读取彩色图像 opencv读取png_opencv读取彩色图像_02


这里我们利用np.array()来创建,然后调用warpAffine来实现,并保持图像的大小不变。

M = np.array([[1, 0, 50],[0, 1, 50]], np.float32)
img_tr =cv2.warpAffine(img, M, img.shape[:2])

其中warpAffine()的声明如下:
cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) → dst
旋转
利用getRotationMatrix2D()获得旋转矩阵,然后利用warpAffine()函数来实现
getRotationMatrix2D()其声明如下:
cv2.getRotationMatrix2D(center, angle, scale) → retval
M=cv2.getRotationMatrix2D((cols/2,rows/2), 45, 1)
img_ro =cv2.warpAffine(img, M, img.shape[:2])
视频读入代码如下:

mport cv2
#设置视频捕获
cap=cv2.VideoCapture(0)
#循环
while True: 
        ret,im=cap.read()
        #显示在窗口上
        cv2.imshow('video test', im)
        key=cv2.waitKey(10)
        if key==27:
                break
        if key==ord('' ):
                 cv2.imwrite('vid_result.jpg', im)

程序详解:
1.捕获对象VideoCapture从摄像头或文件捕获视频。通过一个整数进行初始化,该整数为视频设备的id:如果仅有一个摄像头与计算机相连接,那么该摄像头的id为0;
2.read()方法解码并返回下一视频帧,第一个变量ret是一个判断视频帧是否成功读入的标志,第二个变量则是实际读入的图像数组;
2.函数waitKey()等待用户按键,如果按下的是Esc(ASCII码是27)键,则退出应用;如果按下的是空格键,就保存该视频帧