opencv-学习笔记(1)常用函数和方法。
cv2.imread(filename,falg)
filename是文件名字
flag是读入的方式
cv2.MREAD_UNCHANGED :不进行转化,比如保存为了16位的图片,读取出来仍然为16位。
cv2.IMREAD_GRAYSCALE :进行转化为灰度图,比如保存为了16位的图片,读取出来为8位,类型为CV_8UC1。
cv2.IMREAD_COLOR :进行转化为三通道图像。
cv2.IMREAD_ANYDEPTH :如果图像深度为16位则读出为16位,32位则读出为32位,其余的转化为8位。
实际应用中,falg=0就是灰度图像,falg=1就是三通道图。这种方便
import cv2
import numpy as np
img=cv2.imread('1.jpg',0)//读入灰度图像
cv2.imshow('image',img)
cv2.waitKey(0)
看看输出
flag=0 flag=1
cv2.imshow(‘窗口名字’,图像对象)
但是光光这个不够
还要下面加一句cv2.waitKey(0)
这个函数顾名思义就是等待键盘输入,0就是不停等待,5000就是5s内,函数会返回按下的ascii码
cv2. destroyAllWindows(“窗口名”)
可以关闭任何窗口
不加参数则是关闭所有窗口
cv2.namedWindow('新建窗口名',flag)
创建一个窗口名叫image
flag=cv2.WINDOW_AUTOSIZE时候就自动适应大小这是默认的
flag=cv2.WINDOW_NORMAL就是图片自适应窗口大小
# -*- coding: utf-8 -*-
"""
Created on Thu May 31 17:32:11 2018
@author: Administrator
"""
import cv2
import numpy as np
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
img=cv2.imread('1.jpg',1)
cv2.imshow('image',img)
cv2.waitKey(0)
现在就可以图片自适应窗口了
cv2.imwrite('图像名字',图像对象)
用来保存图片,效果如下
cv.waitKey()
这个函数是有返回值的,我们来看看则么用
import cv2
import numpy as np
img=cv2.imread('1.jpg',1)
cv2.imshow('image',img)
k=cv2.waitKey(0)&0xFF#64位系统必须添加
if k==27: #ESC退出不保存
cv2.destroyAllWindows()
elif k==ord('s'): #s键保存
cv2.imwrite('fuck2.jpg',img)
cv2.destroyAllWindows()
matplotlib
这个py库的使用是
from matplotlib import pyplot as plt
import cv2
import numpy as np
from matplotlib import pyplot as plt
img=cv2.imread('1.jpg',1)
cv2.imshow('image',img)
cv2.waitKey(0)
plt.imshow(img,cmap='gray',interpolation='bicubic')
plt.xticks([]),plt.yticks([])
plt.show()
这个代码分别用opencv和matplotlib显示了图像可以看出来都相反了?
因为
opencv用摄像头捕捉视频
# -*- coding: utf-8 -*-
"""
Created on Thu May 31 17:32:11 2018
@author: Administrator
"""
import numpy as np
import cv2
#打开摄像头
cap=cv2.VideoCapture(0)
while(True):
#一帧一帧捕获视频
ret,frame=cap.read()
cv2.imshow("frame",frame)
#q键退出
if cv2.waitKey(1)&0xFF==ord('q'):
break;
cap.release()
cv2.destroyAllWindows()
效果如下