C++生成随机裁剪尺寸

news/2024/12/28 13:28:53/文章来源:https://www.cnblogs.com/chentiao/p/18637418

随机裁剪尺寸 (x, y, w, h),其中裁剪区域的宽度和高度不能超过 640 和 360,保证裁剪的宽度和高度 ( w ) 和 ( h ) 是 2 的倍数

代码

#include <iostream>
#include <cstdlib>  // For rand() and srand()
#include <ctime>    // For time()struct CropRect {int x; // Top-left x-coordinateint y; // Top-left y-coordinateint w; // Width of the cropint h; // Height of the crop
};CropRect generateRandomCrop(int maxWidth, int maxHeight) {CropRect rect;// Generate random width and height as multiples of 2rect.w = (rand() % (maxWidth / 2) + 1) * 2; // Width: 2 to maxWidth, step 2rect.h = (rand() % (maxHeight / 2) + 1) * 2; // Height: 2 to maxHeight, step 2// Generate random top-left corner ensuring it fits within the boundariesrect.x = rand() % (maxWidth - rect.w + 1); // x: 0 to (maxWidth - width)rect.y = rand() % (maxHeight - rect.h + 1); // y: 0 to (maxHeight - height)return rect;
}int main() {// Set seed for random number generationsrand(static_cast<unsigned>(time(0)));int maxWidth = 640;  // Maximum widthint maxHeight = 360; // Maximum heightCropRect crop = generateRandomCrop(maxWidth, maxHeight);std::cout << "Random Crop Rectangle:" << std::endl;std::cout << "x: " << crop.x << ", y: " << crop.y << ", w: " << crop.w << ", h: " << crop.h << std::endl;return 0;
}

改动说明

  1. 确保 ( w ) 和 ( h ) 是 2 的倍数:

    • 使用 (rand() % (maxWidth / 2) + 1) * 2 生成宽度,确保生成的值范围是 ( [2, \text{maxWidth}] ),且是偶数。
    • 类似地,使用 (rand() % (maxHeight / 2) + 1) * 2 生成高度。
  2. 保持边界校验:

    • ( x ) 和 ( y ) 的计算不受影响,仍然确保裁剪框在图像范围内。

输出示例

每次运行程序将输出不同的裁剪尺寸,且 ( w ) 和 ( h ) 必定是 2 的倍数。例如:

Random Crop Rectangle:
x: 12, y: 30, w: 128, h: 64

此修改确保宽度和高度符合要求,并且裁剪框始终位于有效范围内。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/860366.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题目集7-8总结:智能家居强电电路模拟系统

一、前言 1.1 题目背景 题目集7和8以智能家居为主题,通过强电电路的模拟设计,引导我们从基本开关电路到多功能调速器和受控设备模拟的深入探索,体现了物联网技术在智能家居中的实际应用。 1.2 题目特点 知识点:涵盖开关逻辑、电路模拟、受控设备特性、并联与串联电路等核…

业务凭证与总账凭证有何异同

在企业财务管理中,"业务凭证"和"总账凭证"是两个核心概念,它们在会计核算和ERP系统中扮演着至关重要的角色。本文将深入探讨这两个概念的异同点,帮助读者更好地理解它们在记录企业经济活动、会计分录以及财务报表编制中的作用和区别。在ERP财务系统里,…

Qt - 实现HTTP服务器和HTTP客户端

1. WebSocket服务器和HTTP服务器的区别 WebSocket服务器和HTTP服务器是两种不同的服务器类型,它们在协议、连接方式和通信模式等方面有所区别。协议:HTTP服务器使用HTTP协议进行通信,而WebSocket服务器使用WebSocket协议。HTTP协议是无状态的,客户端发起请求,服务器响应请…

“代码之舟”——2024秋软工实践纪

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315这个作业的目标 回顾这一学期所完成的软工任务,总结这一学期的收获学号 102202102 王子聪引言: 在上这门课之前还没有真正的体…

Python-DdddOcr的简单使用

前言:我们在做WEB端UI自动化时,会遇到图片验证码校验的登录方式。我在之前的文章也做过介绍:https://www.cnblogs.com/TSmagic/p/16082799.html (Pillow + pytesseract + tesseract-ocr 破解简单的图形验证码)https://www.cnblogs.com/TSmagic/p/16117861.html(Python + 超…

Omnissa ThinApp 2412 - 应用虚拟化软件

Omnissa ThinApp 2412 - 应用虚拟化软件Omnissa ThinApp 2412 - 应用虚拟化软件 Omnissa ThinApp, formerly VMware ThinApp 请访问原文链接:https://sysin.org/blog/omnissa-thinapp/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.orgOmnissa ThinApp 通过将应用…

Omnissa App Volumes 4, version 2412 - 实时应用程序交付系统

Omnissa App Volumes 4, version 2412 - 实时应用程序交付系统Omnissa App Volumes 4, version 2412 - 实时应用程序交付系统 Omnissa App Volumes, formerly VMware App Volumes 请访问原文链接:https://sysin.org/blog/omnissa-app-volumes/ 查看最新版。原创作品,转载请保…

CSP-J2/S2 2024 游记

前情提要:CSP-J/S 2023 写这篇文章的时候,心情比较复杂。 哎,结局还算圆满。初赛 之前那个写的不好再写一遍() 两个都在 WFLS,也就是本校考 qaq。 J 在大礼堂考,没啥好说的,太简单了(除了格雷码,好难没学过 /ll) 乐,考试结束前 3min 还在改卷子() 省流:98。 S 在…

部署traefik 1.7服务

部署traefik服务主要是三个yaml文件:traefik-deployment.yaml,traefik-rbac.yaml,ui.yaml也可以使用traefik-ds.yaml,这个方式体现。 [root@k8smaster traefiks]# ll总用量 12-rw-r--r--. 1 root root 1114 12月 26 22:14 traefik-deployment.yaml-rw-r--r--. 1 root root …

2024.12.26 周四

2024.12.26 周四Q1. 1100 There is a ribbon divided into $n$ cells, numbered from $1$ to $n$ from left to right. Initially, an integer $0$ is written in each cell. Monocarp plays a game with a chip. The game consists of several turns. During the first turn, …

UML之集合类型

无论何时当我们要使用一个多值对象时,我们必须要清楚两个问题,一是这些值的顺序重要吗?二是允许重复值的存在吗?在编程语言中还会有其他的明确的信息,在UML中,只需明确这两个问题的答案即可确定对应的集合类型。 1.Set Set是一个不允许存在重复值且未排序的集合。 例如一…

《计算机基础与程序设计》第十四周学习总结

学期(2024-2025-1) 学号(20241412) 《计算机基础与程序设计》第十四周学习总结 作业信息这个作业属于哪个课程 <班级的链接> 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 <作业要求的链接> 2024-2025-1计算机基础与程序设计第十四周作业)教材学习内容…