2024年金砖竞赛--云边端赛项

大致

1
2
3
4
5
6
7
打开视频文件:使用 cv2.VideoCapture 打开指定路径的视频文件。
检查是否成功打开:通过 cap.isOpened() 方法检查是否成功打开了视频文件。
读取视频帧:在循环中使用 cap.read() 方法逐帧读取视频。
显示视频帧:使用 cv2.imshow() 方法显示每一帧。
保存视频帧:定义 save_image 函数来保存当前帧,并以 frame_计数.jpg 的形式命名。
释放资源并关闭窗口:定义 release_resources函数或者cap.release()cv2.destroyAllWindows()释放摄像头并关闭所有窗口
键盘输入监听:使用 cv2.waitKey() 方法等待一小段时间(这里设置为 1 毫秒),并在用户按下 'q' 键时退出循环。

读取视频

1
2
video_path = 'path_to_your_video.mp4'  # 将此处替换为你的MP4文件路径
cap = cv2.VideoCapture(video_path)

判断是否打开

1
2
3
# 检查视频是否成功打开
if not cap.isOpened():
print("Error: Could not open video.")

获取视频的宽度/长度像素

1
2
3
4
# 获取视频的宽度
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
# 获取视频的长度
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

读取视频图像,赋值给ret,frame

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
while True:
# 读取帧
ret, frame = cap.read()
if not ret:
print("Cannot receive frame (stream end?). Exiting ...")
break

# 显示帧
cv2.imshow('Video', frame)

# 按下 'q' 键退出
if cv2.waitKey(1) == ord('q'):
break

# 保存当前帧
save_image(frame, frame_count)
frame_count += 1

释放资源

1
2
3
# 释放摄像头并关闭所有窗口
cap.release()
cv2.destroyAllWindows()

判断文件夹是否存在

1
2
3
4
# 检查输出目录是否存在,如果不存在则创建
output_dir = 'rename'
if not os.path.exists(output_dir):
os.makedirs(output_dir)

查看文件夹的文件,并且返回给一个数组

1
2
filenamer_list = [entry.name for entry in os.scandir(folder_path) if entry.is_file()]
os.scandir(picture) 会扫描指定文件夹picture下的所有内容

将picture文件夹内的所有.png 拓展名文件修改为.jpg拓展名,保存在rename 文件夹内

1
2
3
4
5
# 将文件名的拓展名从.png修改为.jpg
new_filename = filename.replace(".png", ".jpg")

# 重命名文件到目标文件夹
os.rename(source_file, target_file)

读取当前路径的图片

1
img = cv2.imread('test.png')

将图像转换成灰度

1
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

传入灰色图像,阈值变量为threshold,超过阈值的像素修改为255,采用cv2.THRESH_BINARY_INV

1
2
cv2.threshold(img_gray, threshold, 255, cv2.THRESH_BINARY_INV)
图像 阈值变量

读取当前目录下的wuyanzu.png的灰度图片;进行图像边缘检测传入最小阈值为128,最大阈值为 200

1
2
3
4
5
# 读取当前路径下的“wuyanzu.png”图片,并转为灰度图
img_wuyanzu = cv2.imread('wuyanzu.png', cv2.IMREAD_GRAYSCALE)

# 使用 Canny 边缘检测,设置最小阈值为128,最大阈值为200
edges = cv2.Canny(img_wuyanzu, 128, 200)

对图像进行图像的均衡化对比度限制值为2直方图均衡化的网格大小为 8*8。

1
2
# 创建CLAHE对象,设置对比度限制为2,网格大小为8x8
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))

https://cdn.jsdelivr.net/gh/weixuna/MyPic/24/10/image_2cf8f5053464f20113c15cb66c588fc5.png