网站可以先做代码么,seo搜索优化服务,外贸网站为何搜不到,用虚拟机做网站服务器吗文章目录 使用conda安装OpenCV开发环境所有相关接口验证demo以上传至仓库窗口相关接口创建窗口#xff1a;cv2.namedWindow调整窗口大小#xff1a;cv2.resizeWindow显示图像#xff1a;cv2.imshow等待输入#xff1a;cv2.waitKey销毁所有窗口#xff1a;cv2.destroyAllWi… 文章目录 使用conda安装OpenCV开发环境所有相关接口验证demo以上传至仓库窗口相关接口创建窗口cv2.namedWindow调整窗口大小cv2.resizeWindow显示图像cv2.imshow等待输入cv2.waitKey销毁所有窗口cv2.destroyAllWindows销毁指定窗口cv2.destroyWindow 图片相关接口读取图像cv2.imread保存一个图像cv2.imwrite 视频/摄像头相关接口显示视频cv2.VideoCaptureVideoCapture 类的主要方法检查设备是否成功打开isOpened()捕获下一帧read()获取视频流的某个属性get()设置视频流的某个属性: set(propId, value)关闭视频流并释放资源release() 录制视频指定视频编解码器的四字符代码cv2.videowriter_fourcc创建videoWriter对象: cv2.VideoWriter写入帧out.write() 使用conda安装OpenCV开发环境
1. 创建虚拟环境conda create -n opencv36 python3.6
2. 激活虚拟环境conda activate opencv36
3. 安装opencvpip install opencv-python3.4.1.15pip install opencv-contrib-python3.4.1.15所有相关接口验证demo以上传至仓库 example代码地址https://gitee.com/norep/learn-opencv 窗口相关接口
创建窗口cv2.namedWindow
cv2.namedWindow(My Window, cv2.WINDOW_NORMAL)参数说明 窗口名称窗口的标题。它是一个字符串用于标识窗口 窗口属性(可选) : cv2.WINDOW_NORMAL这个标志表示窗口是可调整大小的。 cv2.WINDOW_AUTOSIZE这个标志表示窗口大小会自动调整为与显示的图像大小相匹配用户不能手动调整大小。 cv2.WINDOW_FREERATIO这个标志表示窗口可以自由缩放。 cv2.WINDOW_KEEPRATIO这个标志表示窗口在缩放时保持图像的宽高比。 cv2.WINDOW_GUI_EXPANDED这个标志表示窗口有GUI扩展功能。 调整窗口大小cv2.resizeWindow
cv2.resizeWindow(My Window, 640, 480)参数说明 窗口名称这是之前使用 cv2.namedWindow 创建的窗口的标题。它是一个字符串用于标识要调整大小的窗口。 宽度这是你希望设置的新窗口的宽度以像素为单位。 高度这是你希望设置的新窗口的高度以像素为单位。 显示图像cv2.imshow
cv2.imshow(My Image, image)参数说明 窗口名称这是之前使用 cv2.namedWindow 创建的窗口的标题。它是一个字符串用于标识要显示图像的窗口。 图像这是你要显示的图像。它应该是一个 NumPy 数组通常是使用 OpenCV 函数读取的图像数据。 注意如果在调用 cv2.imshow 之前没有创建窗口使用 cv2.namedWindowOpenCV 会自动创建一个窗口。但是如果想要设置窗口的属性比如可调整大小需要在显示图像之前显式地创建窗口。
**注意**必须要与cv2.waitKey函数配套调用如果不调用 cv2.waitKey可能会造成窗口无响应或崩溃
等待输入cv2.waitKey
用于在显示图像后暂停程序的执行等待用户输入
cv2.waitKey(0) # 等待无限期直到有键被按下
# 或者
cv2.waitKey(1000) # 等待1000毫秒1秒参数说明 延迟时间这是函数等待按键输入的时间以毫秒为单位。如果这个值是正数函数将等待这么多毫秒或者直到有按键被按下。如果这个值是 0函数将无限期地等待按键输入。如果这个值是负数函数将立即返回不等待任何按键。 返回值 按键的 ASCII 码以便根据用户按下的键执行不同的操作。 销毁所有窗口cv2.destroyAllWindows
用于关闭所有先前由 OpenCV 创建的窗口并销毁与这些窗口相关的所有资源。
cv2.destroyAllWindows()销毁指定窗口cv2.destroyWindow
cv2.destroyWindow(Window Name) # 关闭指定名称的窗口参数说明 窗口名称这是之前使用 cv2.namedWindow 创建的窗口的标题。 **注意**cv2.destroyAllWindows 和 cv2.destroyWindow 只会影响 OpenCV 创建的窗口
图片相关接口
读取图像cv2.imread
用于从文件中读取图像。这个函数非常基础且常用是处理图像时的第一步。读取的图象是BGR格式。
image cv2.imread(filename, flags)参数说明 filename一个字符串表示要读取的图像文件的路径。这个路径可以是相对路径或绝对路径。 flags(可选) 这是一个可选参数用于指定如何读取图像。常用的标志包括 cv2.IMREAD_COLOR加载彩色图像。任何图像的透明度将被忽略。 cv2.IMREAD_GRAYSCALE以灰度模式加载图像。 cv2.IMREAD_UNCHANGED包括图像的alpha通道加载图像。也就是说加载图像的同时保留图像的透明度。 保存一个图像cv2.imwrite
用于将图像保存到文件中
result cv2.imwrite(filename, image)参数说明 filename一个字符串表示要保存的图像文件的路径。这个路径可以是相对路径或绝对路径。文件扩展名决定了图像的保存格式例如 .jpg、.png、.bmp 等。 image一个 NumPy 多维数组通常是通过 OpenCV 的其他函数处理过的图像数据。数组的数据类型和形状取决于图像的通道数和深度。 返回值 如果函数成功保存图像它会返回 True。 如果无法保存图像例如文件无法写入权限不足格式不支持等函数会返回 False。 **注意**保存图像时OpenCV 默认使用 BGR 格式而不是常见的 RGB 格式。这意味着红色和蓝色通道在数组中是交换的。如果你有一个 RGB 格式的图像数组你需要先使用 cv2.cvtColor 函数将其转换为 BGR 格式然后再保存。
视频/摄像头相关接口
显示视频cv2.VideoCapture
是 OpenCV 库中的一个类用于从视频文件或摄像头捕获视频流。
cap cv2.VideoCapture(filename_or_index)参数说明 filename_or_index如果是一个字符串它表示视频文件的路径。如果是一个整数它表示摄像头的索引号通常0表示第一个摄像头。 返回值 VideoCapture 对象 VideoCapture 类的主要方法
检查设备是否成功打开isOpened()
用于检查视频捕获设备如摄像头或视频文件是否成功打开。这个方法返回一个布尔值如果视频捕获设备成功打开则返回 True否则返回 False。
捕获下一帧read() ret, frame cap.read()返回值 返回一个布尔值和一个帧。如果读取成功返回 True 和当前的帧如果读取失败或到达视频末尾返回 False 和一个空帧。 获取视频流的某个属性get()
get(propId)
# example:
# width cap.get(cv2.CAP_PROP_FRAME_WIDTH)参数说明 propId 是属性的标识符: cv2.CV_CAP_PROP_POS_MSEC返回当前视频帧的位置单位为毫秒。 cv2.CV_CAP_PROP_POS_FRAMES返回当前视频帧的位置单位为帧数。 cv2.CV_CAP_PROP_POS_AVI_RATIO返回当前视频帧的位置单位为视频文件的总长度的比例。 cv2.CV_CAP_PROP_FRAME_WIDTH返回视频流的宽度。 cv2.CV_CAP_PROP_FRAME_HEIGHT返回视频流的高度。 cv2.CV_CAP_PROP_FPS返回视频流的帧率。 cv2.CV_CAP_PROP_FOURCC返回视频流的四字符代码Four-CC。 cv2.CV_CAP_PROP_FRAME_COUNT返回视频文件中的总帧数。 设置视频流的某个属性: set(propId, value)
set(propId, value)同上
关闭视频流并释放资源release()
cap.release()注意
在使用 VideoCapture 对象后应该调用 release() 方法来释放资源特别是在使用摄像头时。 read() 方法可能会因为各种原因失败比如文件不存在、权限问题或设备问题。因此每次调用 read() 后都应该检查返回的布尔值。 如果视频文件或摄像头的帧率很高可能需要使用 cv2.waitKey 来控制帧的显示速度以避免视频播放过快。
录制视频
指定视频编解码器的四字符代码cv2.videowriter_fourcc
四字符代码是由四个字符组成的字符串这些字符代表了特定的编解码器。不同的编解码器支持不同的视频格式和压缩选项。
fourcc cv2.VideoWriter_fourcc(*XVID)参数说明 一些常见的四字符代码包括 DIVX用于 DivX 编解码器 XVID用于 Xvid 编解码器 H264用于 H.264 编解码器 MJPG用于 Motion JPEG 编解码器 MP4V用于 MPEG-4 编解码器 创建videoWriter对象: cv2.VideoWriter
OpenCV 库中的一个类用于将视频序列写入文件。这个类允许你以不同的编解码器和格式保存视频文件。要使用 VideoWriter 类你需要创建一个 VideoWriter 对象然后不断地向它写入帧最后释放对象以关闭视频文件。
out cv2.VideoWriter(filename, fourcc, fps, frameSize[, isColor])参数说明 filename一个字符串表示要写入的视频文件的路径。文件扩展名决定了视频的保存格式例如 .avi、.mp4、.mkv 等。 fourcc一个表示视频编解码器的四字符代码通常通过 cv2.VideoWriter_fourcc 函数获取。例如cv2.VideoWriter_fourcc(*‘XVID’) 表示使用 Xvid 编解码器。 fps一个整数或浮点数表示视频的帧率每秒帧数。 frameSize一个元组 (width, height)表示视频帧的大小。 isColor可选一个布尔值指示写入的视频是否为彩色。如果为 True则视频为彩色如果为 False则视频为灰度。默认值为 True。 返回值 videoWriter对象 如果创建失败则返回 None。 注意四字符代码的选择取决于你的系统和安装的编解码器。如果你选择的编解码器不受支持VideoWriter 对象的创建可能会失败。
写入帧out.write()
在完成视频写入后务必调用 release() 方法来释放资源并正确关闭视频文件。
out.write(frame)参数说明 frame 应该是一个 NumPy 数组代表要写入的视频帧。这个数组的形状和类型必须与创建 VideoWriter 对象时指定的帧大小和颜色模式相匹配。 如果 frame 的形状或类型与预期的不同out.write(frame) 可能会导致错误或写入的视频文件无法正常播放。
返回值 如果在写入过程中出现错误out.write(frame) 可能会返回 False。因此在实际应用中你可能需要检查返回值并相应地处理错误。