百度多久收录一次网站,商标注册网上,网站建设的基本要素有,网站建设需要什么专业OpenCV图片处理基础 OpenCV的视频教学#xff1a;https://www.bilibili.com/video/BV14P411D7MH 1-OpenCV摄像头读取 OpenCV使用摄像头读取图片帧#xff0c;点击S保存当前帧到指定文件夹#xff0c;点击Q关闭窗口#xff0c;点击其他按钮打印按钮的值 要实现这个功能…OpenCV图片处理基础 OpenCV的视频教学https://www.bilibili.com/video/BV14P411D7MH 1-OpenCV摄像头读取 OpenCV使用摄像头读取图片帧点击S保存当前帧到指定文件夹点击Q关闭窗口点击其他按钮打印按钮的值 要实现这个功能你需要使用OpenCV的VideoCapture类来捕获摄像头的视频流并使用cv2.waitKey()来检测按键事件。以下是一个简单的Python脚本演示了如何使用OpenCV从摄像头读取图片帧并根据用户的按键操作来保存当前帧或关闭窗口
import cv2
import os# 指定保存图片的文件夹
save_folder saved_frames
if not os.path.exists(save_folder):os.makedirs(save_folder)# 打开摄像头0表示默认的摄像头
cap cv2.VideoCapture(0)if not cap.isOpened():print(无法打开摄像头)exit()frame_count 0
while True:# 读取一帧图像ret, frame cap.read()if not ret:print(无法读取视频帧)break# 显示图像cv2.imshow(Camera Feed, frame)# 等待按键事件1表示等待1ms0表示无限等待key cv2.waitKey(1)# s键保存当前帧if key ord(s) or key ord(S):frame_name os.path.join(save_folder, fframe_{frame_count}.jpg)cv2.imwrite(frame_name, frame)print(fFrame saved as {frame_name})frame_count 1# q键退出循环elif key ord(q) or key ord(Q):break# 其他键打印值elif key ! -1:print(fKey pressed: {chr(key)})# 释放摄像头并关闭所有OpenCV窗口
cap.release()
cv2.destroyAllWindows()这段代码首先检查摄像头是否可以打开然后进入一个无限循环在循环中不断地从摄像头读取图像帧并显示。cv2.waitKey(1)函数用于检测用户是否按下了键盘上的某个键。如果用户按下’S’或’s’则当前帧会被保存到指定的文件夹中如果用户按下’Q’或’q’则退出循环如果用户按下其他键程序会打印出该键的字符值。最后释放摄像头资源并关闭所有OpenCV窗口。 2-OpenCV本地文件读取 OpenCV使用本地文件读取图片帧点击S保存当前帧到指定文件夹点击Q关闭窗口点击其他按钮打印按钮的值 如果你想要从本地视频文件读取帧而不是实时从摄像头捕获你可以稍微修改之前的代码使用cv2.VideoCapture来打开视频文件。以下是一个示例代码它读取本地视频文件并允许用户通过按键操作来保存当前帧或关闭窗口
import cv2
import os# 指定保存图片的文件夹
save_folder saved_frames
if not os.path.exists(save_folder):os.makedirs(save_folder)# 替换为你的视频文件路径
video_file_path path_to_your_video_file.mp4# 打开视频文件
cap cv2.VideoCapture(video_file_path)if not cap.isOpened():print(无法打开视频文件)exit()frame_count 0
while True:# 读取一帧图像ret, frame cap.read()if not ret:print(视频播放完毕)break# 显示图像cv2.imshow(Video Feed, frame)# 等待按键事件0表示无限等待直到有按键被按下key cv2.waitKey(0)# s键保存当前帧if key ord(s) or key ord(S):frame_name os.path.join(save_folder, fframe_{frame_count}.jpg)cv2.imwrite(frame_name, frame)print(fFrame saved as {frame_name})frame_count 1# q键退出循环elif key ord(q) or key ord(Q):break# 其他键打印值elif key ! -1:print(fKey pressed: {chr(key)})# 释放视频文件并关闭所有OpenCV窗口
cap.release()
cv2.destroyAllWindows()这段代码首先尝试打开指定的视频文件。如果成功它将进入一个循环在循环中逐帧读取视频内容并显示。和之前摄像头捕获的例子类似它使用cv2.waitKey(0)来等待用户按键事件。如果用户按下’S’或’s’当前帧将被保存到指定的文件夹中如果用户按下’Q’或’q’程序将退出循环如果用户按下其他任意键程序将打印出该键的字符值。最后它释放视频文件资源并关闭所有OpenCV窗口。
请确保将video_file_path变量替换为你自己的视频文件路径。 3-OpenCV录制视频 OpenCV使用摄像头读取图片帧录制到本地文件夹中点击Q关闭窗口 要实现从摄像头读取视频帧并录制到本地文件的功能你需要使用OpenCV的视频写入类VideoWriter。以下是一个示例代码展示了如何从摄像头捕获视频帧并将其保存为一个视频文件同时按’Q’键退出录制。
首先请确保你已经安装了OpenCV库。如果没有安装可以使用pip来安装
pip install opencv-python实现思路
打开摄像头以捕获视频流。设置视频写入对象以保存录制的视频。实时显示视频流并检查用户输入。如果用户按下’Q’键则停止录制并退出程序。
解决方案代码
import cv2# 打开摄像头
cap cv2.VideoCapture(0)if not cap.isOpened():print(无法打开摄像头)exit()# 获取视频的基本信息
width int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps int(cap.get(cv2.CAP_PROP_FPS))# 定义视频编码器和输出文件
fourcc cv2.VideoWriter_fourcc(*XVID)
out cv2.VideoWriter(output.avi, fourcc, fps, (width, height))try:while cap.isOpened():# 读取一帧ret, frame cap.read()if not ret:print(无法读取视频帧)break# 写入帧到视频文件out.write(frame)# 显示帧-自定义需要 cv2.resizeWindow(Recording, 640,360)cv2.imshow(Recording, frame)# 检查是否按下Q键if cv2.waitKey(1) 0xFF ord(q):print(录制结束)break
except Exception as e:print(f发生错误: {e})
finally:# 释放资源cap.release()out.release()cv2.destroyAllWindows()代码解释
打开摄像头使用cv2.VideoCapture(0)打开默认摄像头。获取视频属性获取帧的宽度、高度和FPS这些信息用于设置输出视频的属性。创建视频写入对象使用cv2.VideoWriter创建一个对象来写入视频文件指定编码器、文件名、FPS和帧大小。读取和写入帧在循环中读取每一帧并写入视频文件同时显示在窗口中。检查按键使用cv2.waitKey(1)检查是否有按键按下如果按下’Q’键则退出循环。释放资源确保释放摄像头和视频写入对象并关闭所有OpenCV窗口。 4-OpenCV控制鼠标 OpenCV控制鼠标打印鼠标的移动轨迹 使用Python和OpenCV库来创建一个窗口并设置鼠标回调函数可以按照以下步骤进行操作
导入必要的库。定义一个鼠标回调函数它将接收鼠标事件、x和y坐标以及用户定义的数据。创建一个窗口。设置鼠标回调函数到这个窗口。显示一个图像或者保持窗口打开但不显示任何图像。等待用户按键来关闭程序。
下面是具体的实现代码
import cv2
import numpy as np# 鼠标回调函数
def mouse_callback(event, x, y, flags, param):# event: 鼠标的动作类型# x, y: 鼠标指针的位置坐标# flags: 按下的特殊键位信息# param: 用户传递的数据# 打印鼠标事件print(fEvent: {event}, X: {x}, Y: {y})# 打印鼠标点击时的按钮信息if event cv2.EVENT_LBUTTONDOWN:print(Left button of the mouse is clicked)elif event cv2.EVENT_RBUTTONDOWN:print(Right button of the mouse is clicked)elif event cv2.EVENT_MBUTTONDOWN:print(Middle button of the mouse is clicked)elif event cv2.EVENT_MOUSEMOVE:print(Mouse is moving)# 创建一个窗口类比创建一个按钮绑定一个点击事件
cv2.namedWindow(image)
# 将回调函数设置到窗口上
cv2.setMouseCallback(image, mouse_callback)# 创建一个黑色图像
img np.zeros((512, 512, 3), np.uint8)# 显示图像
while True:cv2.imshow(image, img)if cv2.waitKey(20) 0xFF 27: # 按ESC退出break# 关闭所有窗口
cv2.destroyAllWindows()在这段代码中
mouse_callback 函数被定义用来处理鼠标事件。它会根据传入的 event 参数来判断发生了哪种类型的鼠标事件并打印相应的消息。使用 cv2.namedWindow 创建了一个名为 ‘image’ 的窗口。使用 cv2.setMouseCallback 方法将 mouse_callback 函数绑定到 ‘image’ 窗口这样每当在这个窗口内发生鼠标事件时mouse_callback 函数就会被调用。cv2.imshow 用于显示图像。这里我们创建了一个全黑的图像。cv2.waitKey(20) 是用来等待用户按键的这里设置为20毫秒是为了让程序有足够的时间响应鼠标事件。如果按下了ESC键ASCII码值为27则跳出循环。最后使用 cv2.destroyAllWindows 关闭所有由OpenCV创建的窗口。
运行这段代码后当你在窗口中移动鼠标或点击鼠标时控制台会输出相应的鼠标事件和位置信息。 4-OpenCV使用TrackBar OpenCV创建3个TrackBar分别对应R/G/B拖动TrackBar改变展示图片的颜色 要使用OpenCV创建三个Trackbar来分别控制图片的红R、绿G、蓝B三个颜色通道你可以按照以下步骤编写代码
导入必要的库。加载一张图片。创建一个窗口用于显示图片。创建三个Trackbar分别对应R、G、B通道。定义一个回调函数用于更新图片的颜色通道值。在主循环中显示更新后的图片。
下面是一个完整的示例代码
import cv2
import numpy as np# 加载图片
img cv2.imread(path_to_your_image.jpg) # 替换为你的图片路径# 创建一个窗口用于显示图片
cv2.namedWindow(image)# 创建三个Trackbar分别对应R、G、B通道
cv2.createTrackbar(R, image, 0, 255, lambda x: None)
cv2.createTrackbar(G, image, 0, 255, lambda x: None)
cv2.createTrackbar(B, image, 0, 255, lambda x: None)# 初始化颜色通道值
r 0
g 0
b 0# 定义一个回调函数用于更新图片的颜色通道值
def update_color(x):global r, g, br cv2.getTrackbarPos(R, image)g cv2.getTrackbarPos(G, image)b cv2.getTrackbarPos(B, image)new_img np.zeros_like(img)new_img[:, :, 0] r # 更新R通道new_img[:, :, 1] g # 更新G通道new_img[:, :, 2] b # 更新B通道cv2.imshow(image, new_img)# 初始调用一次回调函数以显示初始颜色
update_color(0)# 主循环
while True:if cv2.waitKey(1) 0xFF ord(q): # 按q键退出break# 释放所有资源
cv2.destroyAllWindows()在这段代码中我们首先加载了一张图片并创建了一个窗口来显示它。然后我们为R、G、B三个通道各创建了一个Trackbar范围从0到255。我们定义了一个update_color函数它会被Trackbar的回调自动调用以更新图片的颜色通道值。在主循环中我们检查是否有按键事件如果用户按下了’q’键则退出循环。
请确保将path_to_your_image.jpg替换为你的图片文件的实际路径。如果你没有图片文件可以使用OpenCV自带的示例图片或者一张你本地的图片。