bobo作业14

作业14:

在第一帧选定边框,然后随机生成边框,截取随机边框对应的图像,并且将随机大小的边框截取到的图像,变为尺寸一样大小的图像,保存到本地。

 参考链接:

https://blog.csdn.net/oppo62258801/article/details/70144735(python opencv 图像尺寸变换)

1、res=cv2.resize(image,(32,32),interpolation=cv2.INTER_CUBIC)

答案:

import cv2 as cv
import numpy as np
import random

frames= 0

capture = cv.VideoCapture(0)                        # 创建一个VideoCapture对象
result_video = "result.mp4"
r = None

while(True):

    ret, frame = capture.read()                     # 一帧一帧读取视频

    cv.imshow('frame ', frame)#视频frame的第一帧用于画框
    if frames == 0:
        r = cv.selectROI(frame)
        # Crop image
        imCrop = frame[int(r[1]):int(r[1] + r[3]), int(r[0]):int(r[0] + r[2])]#这里才是真正的左X左Y,右X右Y呢
        cv.imshow('cut ', imCrop)  # 显示一下带框的结果(视频cut的第一帧(带框))
    frames += 1

    cv.rectangle(frame, r, (55, 255, 155), 5)
    #cv.putText(frame, 'frame_%s' % frame, (word_x, word_y), cv.FONT_HERSHEY_SIMPLEX, 1, (55, 255, 155), 2)
    x=r[0]+r[2]//2#r中的元素一定要分清楚Imcrop里谁是左X谁是右X谁是左Y谁是右,按这个对照imCrop = frame[right_y_down:left_y_up, left_x_up:right_x_down, :]
    y=r[1]+r[3]//2#//为python整除
    left_x_up = x-random.randint(0,100)
    left_y_up = y+random.randint(0,100)#注意这里的调参
    right_x_down = x + random.randint(0,100)
    right_y_down = y- random.randint(0,100)

    #left_x_up = min(left_x_up, right_x_down)
    #left_y_up = max(left_y_up, right_y_down)
    #right_x_down = max(left_x_up, right_x_down)
    #right_y_down = min(left_y_up, right_y_down)
    cv.rectangle(frame, (left_x_up, left_y_up), (right_x_down, right_y_down), (55, 255, 155), 5)
    imCrop = frame[right_y_down:left_y_up, left_x_up:right_x_down, :]
    # cv.rectangle(frame, r, (55, 255, 155), 5)
    # cv.putText(frame, 'frame_%s' % frame, (word_x, word_y), cv.FONT_HERSHEY_SIMPLEX, 1, (55, 255, 155), 2)
    cv.imshow('angle', frame)  # 带有目标框的视频
    res = cv.resize(imCrop, (32, 32), interpolation=cv.INTER_CUBIC)
    cv.imwrite('cut' + str(frames) + '.jpg', res)  # 存储每帧框内图片,注意加上.jpg存储图片


    #cv.imshow('angle',frame) #带有目标框的视频
    if cv.waitKey(1) &0xFF == ord('q'):             # 按q停止
        break

capture.release()                                   # 释放cap,销毁窗口
cv.destroyAllWindows()

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值