uint16

简介: uint16“【5月更文挑战第14天】”

circlescv2.HoughCircles 函数返回的数组,它包含了检测到的圆形的信息。每个圆形由圆心的坐标 (x, y) 和半径 r 组成,格式为 (x, y, r)。这些值最初是以浮点数形式给出的。

circles = cv2.HoughCircles(gray, cv2.HoughCircles.HOUGH_GRADIENT, 1, 20, param1=50, param2=80, minRadius=0, maxRadius=0)

返回的 circles 数组的数据类型通常是 float32,因为霍夫变换可能会输出浮点数坐标和半径。然而,在实际应用中,特别是在图像上绘制圆形时,我们需要整数类型的坐标。

np.uint16(np.around(circles)) 的作用:

  1. np.around(circles):这个 numpy 函数将 circles 数组中的每个浮点数四舍五入到最接近的整数。由于图像的坐标是从 0 开始的整数,我们需要将这些浮点数坐标转换为整数。

  2. np.uint16():这个 numpy 函数将 np.around 函数的结果转换为 16 位无符号整数。选择 uint16 是因为它能够覆盖图像坐标的合理范围(0 到 65535),这通常足以处理大多数图像尺寸。

为什么要用:

  • 坐标类型:图像处理函数,如 cv2.circle,要求坐标是整数类型。
  • 避免精度问题:浮点数坐标可能会导致绘制函数无法正确渲染图形。
  • 性能:整数运算通常比浮点数运算更快,尤其是在图形渲染中。

代码解释:

circles = np.uint16(np.around(circles))

这行代码的作用是确保 circles 数组中的圆形坐标和半径是整数类型,这样就可以在图像上准确地绘制圆形。

绘制圆形:

for i in circles[0, :]:
    cv2.circle(src, (i[0], i[1]), i[2], (0, 0, 255), 2)
目录
相关文章
|
7天前
|
程序员 C语言
uint8_t / uint16_t / uint32_t /uint64_t数据类型
uint8_t / uint16_t / uint32_t /uint64_t数据类型
|
2月前
|
存储 C语言
计算 int, float, double 和 char 字节大小
计算 int, float, double 和 char 字节大小。
28 3
|
2月前
|
C语言
signed和unsigned
C语言中的`signed`和`unsigned`修饰符用于整型(int)和字符型(char)。`signed`表示可正负,包含负值;`unsigned`则仅表示非负值,如int默认带signed,unsigned int在相同内存长度下表示的正整数范围加倍。对于char,可能为signed char或unsigned char,声明时建议明确指定。
19 2
|
12月前
|
编译器
unsigned long int 和 unsigned long一样吗?
unsigned 代表的是无符号的整形数
175 0
|
C++
【C/C++】uin8_t uint16_t uint32_t相互转换
uin8_t uint16_t uint32_t 数据类型相互转换
574 0
|
PyTorch 算法框架/工具 索引
如何将[array([5, 0, 0, 0, 0, 0], dtype=uint32), array([0, 1, 0, 4, 0, 0], dtype=uint32), array([0, 0, 0, 3, 3, 3], dtype=uint32)] 转换成一个torch张量
在这个代码中,我先使用 torch.randperm() 函数生成一个长度为原始张量大小的随机索引序列,并用这个索引序列对原始张量进行重排,得到了打乱后的张量 shuffled_tensor。然后,我使用 torch.split() 函数将 shuffled_tensor 拆分成 3 份子张量,并打印出来以验证是否拆分成功。
265 0
|
编解码 网络协议 5G
【C/C++】uin8_t uint16_t uint32_t uint64_t数据类型解析
为了代码编写和阅读方便,我们通常会将数据类型名称声明为简写方式,即uin8_t/uint16_t/uint32_t/uint64_t,或者UINT8/UINT16/UINT32/UINT64。
1360 1
【C/C++】uin8_t uint16_t uint32_t uint64_t数据类型解析
char、signed char和unsigned char
char、signed char和unsigned char
225 0
tdav_converter_video.cxx:49:9: error: ‘uint8’ does not name a type; did you mean ‘uint’?
tdav_converter_video.cxx:49:9: error: ‘uint8’ does not name a type; did you mean ‘uint’?
102 0
|
存储 数据库 开发者
extern,const,#define
extern,const,#define
59 0