Python OpenCV:尝试获取图像的随机部分

Python OpenCV:尝试获取图像的随机部分,python,opencv,numpy,Python,Opencv,Numpy,我试图从视频中获取一幅图像,然后随机裁剪出一块64 x 64 x 3的图像(64宽,64高,3个颜色通道) 以下是我目前掌握的情况: def process_video(video_name): # load video using cv2 video_cap = cv2.VideoCapture(video_name) if video_cap.isOpened(): ret, frame = video_cap.read() else:

我试图从视频中获取一幅图像,然后随机裁剪出一块64 x 64 x 3的图像(64宽,64高,3个颜色通道)

以下是我目前掌握的情况:

def process_video(video_name):
    # load video using cv2
    video_cap = cv2.VideoCapture(video_name)
    if video_cap.isOpened():
        ret, frame = video_cap.read()
    else:
        ret = False
    # while there's another frame
    i = 0
    while ret:
        ret, frame = video_cap.read()
        if i % 10 == 0:
            # save several images from frame to local directory
        i += 1
    video_cap.release()
我想取一小部分帧(64 x 64 x 3)并将其另存为.jpg文件,因此最后一个注释部分出现问题。对如何进行这项工作有什么建议吗


谢谢

对于给定的c、r、宽度和高度

img=img[r:r+height,c:c+width]
将从所需宽度的c列和所需高度的r行中获取一个块


要获得图像的随机裁剪,只需对位置x和y进行采样,然后选择矩阵的该部分,如@Max所述:

将numpy导入为np
def get_random_裁剪(图像、裁剪高度、裁剪宽度):
max_x=图像形状[1]-裁剪宽度
最大y=图像形状[0]-裁剪高度
x=np.random.randint(0,max_x)
y=np.random.randint(0,max_y)
裁剪=图像[y:y+裁剪高度,x:x+裁剪宽度]
还田作物
示例_image=np.random.randint(0,256,(1024,1024,3))
随机裁剪=获取随机裁剪(示例图片,64,64)

您正在寻找如何裁剪图像的随机部分吗?如果是这样,它应该是
img[r:r+高度,c:c+宽度]
True!我编辑了它。哇,我很惊讶你重温了一篇2年前的帖子:我相信这不是一个完整的答案。假设随机生成的c和r是在右下角附近生成的,在这种情况下,所需的块将很小或给出错误。@ziMtyth显然,在这种情况下,r和c的范围必须分别从0到image_height-height和image_width-width,这样就不会发生溢出。