opencv--python学习记录(一)

一、环境搭建

        可以参考CSDN内搭建方法(非常详细),其中需要注意的是因为每个人安装的opencv版本不同安装位置文件路径也会不同,还有配置系统环境变量的path一定要准确,如果出现文件没找到等问题可以去检查一下配置的系统环境变量。

二、图像视频的加载与展示

        介绍opencv库中用于图像和视频操作的几个常用函数以及其参数设置。

1、创建和显示窗口

(1)namedWindow('winname',flag)

        用来创建一个窗口,并且给窗口命名以及设置窗口的类型;

        winname为窗口的名字;

        flag为窗口的类型,比如cv.WINDOW_NORMAL表示用户可以调整窗口大小(无约束)/也用于将全屏窗口切换为正常大小。其他flag可以去查手册;

(2)imshow('winname',mat)

        显示指定的窗口,并且指定图像;

        winname为指定的窗口名;

        mat指定的图像,一般由其他函数生成返回值mat;

(3)destroyALLWindows()

        释放所有窗口资源

2、图片视频加载采集和保存

(1)imread(path,flag)  -->retval

        加载图片,并且返回图片参数

        path需要写明指定图片的路径和文件名(有后缀),其中文件路径Windows下的和Linux下的不同;

        flag是可对图片进行加工如灰度图、二值图输出。可以不写,不写以原图片输出;

        retval是函数的返回值,可用填入imshow进行展示,是mat;

(2) imwrite(name,img)

        保存指定图片到指定位置并且命名

        name为字符型,写明保存的路径和文件名(有后缀);

        img是mat类型,指定保存的图片;

(3)VideoCapture(filename,api)-->retval

        用来打开视频文件、捕获设备或者API视频流;有返回值;

        filename指定需要打开的视频文件(有后缀);

        api可以指定api视频后端设备;

(4)ret,frame = ****.read()

        加载视频,并且返回两个参数;

        ret为是否读取成功参数;

        frame为mat类型,为视频的操作参数;

        ****为需要读取的捕获视频,给返回值命的名。

(5)****.release()

        释放****文件的视频资源; ****是视频文件的索引api;

(6)videowrite( filename, fourcc, fps,size )-->retval

        创建videowriter为写多媒体文件,并且指定好文件路径、文件名、视频格式、视频帧数和视频分辨率;

        filename为视频保存的路径path和文件名(有后缀);

        fourcc是指定四个字符的编码器,常用的是MJPG(.mp4)、DIVX(windows\.avi)、X264(.mkv);ep:VideoWriter_fourcc(*'MJPG')

        fps帧数,可以查看视频帧数设置;

        size分辨率,也可以通过查看视频分辨率设置,如果设置的参数和视频不匹配将会保存失败; 

        注意此函数只是创建写多媒体文件,具体保存要用到(-->retval).write(视频mat);释放要用到-->retval.release。

3、基本图像的绘制与鼠标控制

(1)setMouseCallback(winname,callback,userdata)

        设置鼠标回调函数,并且指定窗口,声明回调函数,传输的参数;

        winname指定窗口;

        callback声明回调函数,函数名不一定是callback,可以自己设置;

        userdata传输的参数,可以不设置,默认是not;

(2)callback(event , x , y , flags , userdata)

        具体的鼠标回调函数配置

        event事件,可以是鼠标移动、按下左键、按下右键等;

        x,y表示鼠标的坐标;

        flags鼠标键和组合键; 

        userdata可选参数;

(3)createTrackbar(trackbarname, winname, value, count, callback, userdata)

        创建跟踪栏,并且指定跟踪栏名字、放置的窗口名、当前值、最大值、回调函数和传输参数;

        trackbarname给跟踪栏命名;

        winname指定窗口;

        value、count当前值和最大值;

        callback、userdata回调函数和传输值,一般可以设置一个象征性的;

(4)getTrackbarPos(trackbarname , winname)-->value

        获取指定窗口指定trackbar的值

(5)利用numpy库绘制一张简单图片

import numpy as np

img = np.zeros((480, 640, 3), np.uint8)

        此代码表示生成全为0的分辨率为640*480(和常规分辨率两个参数位置不同)的三原色图片。

三、相关代码展示

1、简单图片显示

import cv2
import numpy

cv2.namedWindow('img',cv2.WINDOW_NORMAL)
#F:\\tupian\\chinacar.jpeg
img = cv2.imread("F:\\tupian\\chinacar.jpeg")

while True:

    cv2.imshow('img',img)

    key = cv2.waitKey(0)

    if(key & 0xFF == ord('q')):
        break
    elif(key & 0xFF == ord('s')):
        cv2.imwrite("F:\\tupian\\123.png",img)

cv2.destroyAllWindows()

2、设备视频捕获和保存


import cv2

fourcc = cv2.VideoWriter_fourcc(*'MJPG')
vw = cv2.VideoWriter('F:\\tupian\\333.mp4',fourcc,30,(1280,720))


#创建窗口
cv2.namedWindow('video',cv2.WINDOW_NORMAL)

#创建videowrite为写多媒体文件
cv2.resizeWindow('video',1280,720) 

#获取视频设备/读取视频文件,从视频文件中读取视频帧
cap = cv2.VideoCapture(0)

#判断摄像头是否为打开状态
while cap.isOpened():
    #从摄像头读取视频帧
    ret, frame = cap.read()

    if ret == True:
    #将视频在窗口中显示
        cv2.imshow('video',frame)
        cv2.resizeWindow('video',1280,720)

        #写数据到多媒体文件
        vw.write(frame)

        #等待键盘事件,输入q推出
        key = cv2.waitKey(10)
        if(key & 0xFF == ord('q')):
            break
    else:
        break

#释放video capture资源
cap.release()
cv2.destroyAllWindows()
vw.release()

        



3、鼠标回调函数配置

import cv2
import numpy as np

def mouse_callback(event , x , y , flags, userdata):
    print(event , x , y , flags, userdata)

#mouse_callback(1, 100 ,100, 16 , "666")

#创建窗口
cv2.namedWindow('mouse',cv2.WINDOW_NORMAL)
cv2.resizeWindow('mouse',1280,720)

#设置鼠标回调
cv2.setMouseCallback('mouse',mouse_callback,"123")

img = np.zeros((720,1280,3), np.uint8)
while True:
    cv2.imshow('mouse',img)
    key = cv2.waitKey(0)
    if (key & 0xFF == ord('q')):
        break
    

cv2.destroyAllWindows()    

4、trackbar使用和基础图片绘制

import cv2
import numpy as np

def callback():
    pass

#创建窗口
cv2.namedWindow('trackbar',cv2.WINDOW_NORMAL)

#创建trackbar
cv2.createTrackbar('R','trackbar', 0 , 255 , callback)
cv2.createTrackbar('G','trackbar', 0 , 255 , callback)
cv2.createTrackbar('B','trackbar', 0 , 255 , callback)

#创建一个背景图片
img = np.zeros((480, 640, 3), np.uint8)

while True:
    #读取当前trackbar的值
    r = cv2.getTrackbarPos('R','trackbar')
    g = cv2.getTrackbarPos('G','trackbar')
    b = cv2.getTrackbarPos('B','trackbar')

    #给img图片附上BGR值,改变图片颜色
    img[:] = [b, g, r]
    cv2.imshow('trackbar', img)

    key = cv2.waitKey(10)
    if( key & 0xFF == ord( 'q')):
        break

cv2.destroyAllWindows()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值