OpenCV基本操作(一)

前提:配置好OpenCV的PyCharm工程
1.电脑图片读取
opencv中读取图片函数如下
(src_path是自己定义的变量,是要读取的图片的路径)
(img是自己定义的变量,把读到的图片赋值给它)

img=cv2.imread(src_path)

读取到之后展示出来(打开一个名为image的窗口,显示img这个图片)

cv2.imshow('image',img)

按esc键结束不保存,按s键结束并保存,完整函数如下
(按s时候可能需要鼠标单击image窗口并把输入法通过按shift改为英文才会好使)

def read_img(src_path,save_path):
    img=cv2.imread(src_path)
    cv2.imshow('image',img)
    k=cv2.waitKey(0) & 0xFF
    if k==27:
        cv2.destroyAllWindows()
    elif k==ord('s'):
        cv2.imwrite(save_path,img)
        cv2.destroyAllWindows()

注意:路径src_path和save_path表示一定要正确,比如不能用单’'分隔等,正确示例如下

src_path="C:\\Users\\DELL\\Desktop\\img.jpg"
save_path='./save1.jpg'

(./表示当前目录下,也就是该pycharm工程里)
2.电脑视频读取
读取电脑视频函数
(src_path是视频的路径,读到的视频赋值给video,路径表达方式同上文)

video=cv2.VideoCapture(src_path)

读取并显示函数
(waitkey那个表示每帧延时10ms)

def read_video(video):
    while video.isOpened():
        ret,image=video.read()
        if ret:
            cv2.imshow('image',image)
            cv2.waitKey(10)
        else:
            break
    cv2.destroyAllWindows()

3.摄像头图片读取
读取电脑摄像头的代码
(把读取到的赋值给cap)

cap=cv2.VideoCapture(0)

读取并显示图片的代码
(我这里没有加保存图片的代码)
(按q退出)

def read_picture(cap):
    if cap.isOpened():
        ret,picture=cap.read()
        if ret:
            while cv2.waitKey(1)&0xFF!=ord('q'):
                cv2.imshow('picture', picture)
    cap.release()
    cv2.destroyAllWindows()

调用传参并执行

read_picture(cap)

4.摄像头视频读取
读取电脑摄像头的代码
(0表示电脑的摄像头)
(cv2.CAP_DSSHOW在PC端可以省略)

cap=cv2.VideoCapture(0,cv2.CAP_DSSHOW)

获取视频流参数的代码
(读的时候不需要,但是写的时候需要)
(以XVID形式保存)
(分别是视频流宽度,高度,帧率,输出编码方式)

width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps=cap.get(cv2.CAP_PROP_FPS)
fourcc=cv2.VideoWriter.fourcc('X','V','I','D')

输出保存的代码
(fps帧率可以用上文的也可以自己定)

save_path='./save.avi'
writer=cv2.VideoWriter(save_path,fourcc,fps,(width,height))

创建读取函数
(因为是逐帧读取,所以while循环里读写)
(最后一定要释放掉)

def read_video(cap,out):
    while cap.isOpened():
        ret,frame=cap.read()
        if ret:
            out.write(frame)
            cv2.imshow('frame',frame)
            if cv2.waitKey(1)&0xFF==ord('q'):
                break
        else:
            break
    cap.release()
    out.release()
    cv2.destroyAllWindows()

调用传参并执行

read_video(cap,writer)
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值