bobo作业13

本文介绍了一种在视频中选定初始框后,通过随机生成新的框并保存对应图像的方法。利用OpenCV和Python实现,详细展示了如何在选定的框周围生成随机框,并将框内的图像保存。

作业13:

在第一帧选定框,然后在选定的框周围随机生成框,并保存对应的图像。

注意:

1、

imCrop = frame[int(r[1]):int(r[1] + r[3]), int(r[0]):int(r[0] + r[2])]#这里才是真正的左X左Y,右X右Y呢

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, :]

3、

y=r[1]+r[3]//2Y#//为python整除

4、

left_y_up = y+random.randint(0,100)#注意这里的调参

答案:

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]//2Y#//为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)  # 带有目标框的视频
    cv.imwrite('cut' + str(frames) + '.jpg', imCrop)  # 存储每帧框内图片,注意加上.jpg存储图片


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

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

 

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值