OpenCV-Python:随机数与随机颜色

目录

Python中随机数

OpenCV-Python随机数

 随机颜色的生成

随机噪声生成

代码练习与测试

知识笔记


Python中随机数

        在Python中,我们可以使用random模块来生成随机数。random模块提供了一系列的函数来生成不同类型的随机数。以下是一些常用的随机数生成函数:

1.random():生成一个0到1之间的随机浮点数。

import randomrandom_number = random.random()
print(random_number)

2.randint(a, b):生成一个在指定范围内的随机整数,包括a和b。

import randomrandom_number = random.randint(1, 10)
print(random_number)

3.uniform(a, b):生成一个在指定范围内的随机浮点数,包括a和b。

import randomrandom_number = random.uniform(1.0, 10.0)
print(random_number)

4.choice(sequence):从给定的序列中随机选择一个元素。

import randommy_list = [1, 2, 3, 4, 5]
random_element = random.choice(my_list)
print(random_element)

5.shuffle(sequence):随机打乱给定的序列。

import randommy_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)

OpenCV-Python随机数

        在OpenCV-Python中,可以使用cv2模块的randu()randn()函数来生成随机数。

1.cv2.randu(dst, lowerb, upperb):生成一个指定范围内的随机整数数组或矩阵。dst是输出数组或矩阵,lowerb是下界,upperb是上界。下界和上界的数据类型必须匹配dst的数据类型。

import cv2
import numpy as np# 生成一个3x3的int类型的随机矩阵,范围在0到255之间
random_matrix = np.zeros((3, 3), dtype=np.uint8)
lowerb = np.array([0, 0, 0])
upperb = np.array([255, 255, 255])
cv2.randu(random_matrix, lowerb, upperb)
print(random_matrix)

2.cv2.randn(dst, mean, stddev):生成一个服从正态分布的随机数数组或矩阵。dst是输出数组或矩阵,mean是均值,stddev是标准差。均值和标准差的数据类型必须匹配dst的数据类型。

import cv2
import numpy as np# 生成一个3x3的float类型的随机矩阵,均值为0,标准差为1
random_matrix = np.zeros((3, 3), dtype=np.float32)
mean = np.array([0, 0, 0])
stddev = np.array([1, 1, 1])
cv2.randn(random_matrix, mean, stddev)
print(random_matrix)

这些函数可以生成不同类型的随机数数组或矩阵,你可以根据需要选择合适的函数来生成随机数。

 随机颜色的生成

        通过修改绘图函数中的相关参数可以使随机颜色生成。

cv2.rectangle(image, (x, y), (x + width, y + height), color, thickness=2)

随机噪声生成

使用OpenCV-Python中的随机函数生成随机噪声的方法如下:

import cv2
import numpy as np# 创建一个空白图像
image = np.zeros((512, 512), dtype=np.uint8)# 生成随机噪声
cv2.randn(image, np.mean(image), np.std(image))# 显示图像
cv2.imshow("Random Noise", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

        在上述代码中,我们首先创建了一个空白图像,然后使用cv2.randn()函数生成了随机噪声,并将其存储在图像中。最后,使用cv2.imshow()函数显示生成的随机噪声图像。

你可以调整图像的大小和数据类型,以及噪声的均值和标准差,来生成不同类型的随机噪声。

代码练习与测试

        以下是使用OpenCV-Python随机绘制不同大小不同矩形的代码示例:

import cv2
import numpy as np# 创建一个空白图像
image = np.zeros((500, 500, 3), dtype=np.uint8)# 随机绘制10个不同大小的矩形
for _ in range(10):# 随机生成矩形的位置和大小x = np.random.randint(0, 500)y = np.random.randint(0, 500)width = np.random.randint(10, 200)height = np.random.randint(10, 200)# 随机生成矩形的颜色color = (np.random.randint(0, 256), np.random.randint(0, 256), np.random.randint(0, 256))# 在图像上绘制矩形cv2.rectangle(image, (x, y), (x + width, y + height), color, thickness=2)# 显示绘制结果
cv2.imshow("Random Rectangles", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行效果图:

        此代码将创建一个500x500的空白图像,并在其中随机绘制10个不同大小的矩形。每个矩形的位置、大小和颜色都是随机生成的。最后,通过OpenCV的imshow函数显示绘制的结果。 

知识笔记

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

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

相关文章

解决git clone报错: Failed to connect to github.com port 443 after 21068 ms: Couldn’t connect to server

解决git clone报错: Failed to connect to github.com port 443 after 21068 ms: Couldn’t connect to server 1. 问题 不能git clone来自Github上的仓库,报端口443错误。 2.解决方案 主要是由于Git端口与系统代理不一致 默认的端口号:1…

麒麟KYLINOS操作系统修改GRUB字体大小

原文链接:麒麟iso镜像中GRUB字体大小怎么改? hello,大家好啊,对于使用Linux系统的朋友来说,GRUB(GRand Unified Bootloader)是一个非常熟悉的名字。它是Linux系统中最常用的启动引导程序。但有时…

Docker本地部署Drupal内容管理框架并实现公网远程访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址7. 结语 前言 Dupal是一个强大的CMS,适用于各种不同的网站项目,从小型个人博客到大型企业级门户网站。它…

基于JAVA+SpringBoot+微信小程序的宠物领养平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着人们生活水平的提…

系列学习前端之第 2 章:一文精通 HTML

全套学习 HTMLCSSJavaScript 代码和笔记请下载网盘的资料: 链接: https://pan.baidu.com/s/1-vY2anBdrsBSwDZfALZ6FQ 提取码: 6666 HTML 全称:HyperText Markup Language(超文本标记语言) 1、 HTML 标签 1. 标签又称元素&#…

通过51单片机控制28byj48步进电机按角度正反转旋转

一、前言 本项目基于STC89C52单片机,通过控制28BYJ-48步进电机实现按角度正反转旋转的功能。28BYJ-48步进电机是一种常用的电机,精准定位和高扭矩输出,适用于许多小型的自动化系统和机械装置。 在这个项目中,使用STC89C52单片机…

粒子库particles.vue3在项目中的使用

一、particles.vue3是什么 particles.vue3 是一个 Vue 3 的组件库,用于在 Vue 3 项目中创建和管理粒子效果。它基于 tsparticles 引擎,提供了一系列的 Vue 组件,使我们能够轻松地在应用程序中添加动态的粒子效果。   如果您正在开发一个 V…

python+requests接口自动化测试框架实例详解教程

1、首先,我们先来理一下思路。 正常的接口测试流程是什么? 脑海里的反应是不是这样的: 确定测试接口的工具 —> 配置需要的接口参数 —> 进行测试 —> 检查测试结果(有的需要数据库辅助) —> 生成测试报…

21-网络通信

21.1——网络程序设计基础 网络程序设计编写得到是与其他计算机进行通信的程序 21.1.1——局域网与互联网 为了实现两台计算机的通信,必须用一个网络线路连接两台计算机 21.1.2——网络协议 网络协议规定了计算机之间连接的物理、机械 (网线与网卡的连接规定)、…

Mysql分布式集群部署---MySQL集群Cluster将数据分成多个片段,每个片段存储在不同的服务器上

1.1 目的 部署MysqlCluster集群环境 1.2 MySQL集群Cluster原理 1 数据分片 MySQL集群Cluster将数据分成多个片段,每个片段存储在不同的服务器上。这样可以将数据负载分散到多个服务器上,提高系统的性能和可扩展性。 2. 数据同步 MySQL集群Cluster使…

Vue.js实现可编辑表格并高亮修改的单元格

实现一个可编辑的表格,让用户可以修改表格中的数据,并且能够清楚地看到哪些单元格被修改过。这样的功能可以提高用户体验,也方便后端处理数据的变化。 本文将介绍如何使用Vue.js和Element UI的el-table组件来实现一个可编辑表格,…

267TB全球卫星影像如何管理?

现在国产卫星企业真的是越来越多了! 就在上周,又有一家企业在网上找到我们谈合作事宜。 在当天下午,我们又约了一次面谈沟通,深感国产卫星行业迸发的蓬勃生机! 这些企业的卫星每天都在天上拍摄,动辄就产…