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数据类型
86 0
|
存储 安全
atomic_int
atomic_int
365 0
|
编译器
unsigned long int 和 unsigned long一样吗?
unsigned 代表的是无符号的整形数
297 0
|
C++
【C/C++】uin8_t uint16_t uint32_t相互转换
uin8_t uint16_t uint32_t 数据类型相互转换
799 0
|
编解码 网络协议 5G
【C/C++】uin8_t uint16_t uint32_t uint64_t数据类型解析
为了代码编写和阅读方便,我们通常会将数据类型名称声明为简写方式,即uin8_t/uint16_t/uint32_t/uint64_t,或者UINT8/UINT16/UINT32/UINT64。
1650 1
【C/C++】uin8_t uint16_t uint32_t uint64_t数据类型解析
char、signed char和unsigned char
char、signed char和unsigned char
299 0
|
存储 数据库 开发者
extern,const,#define
extern,const,#define
82 0
|
C++
自定义C++ void swap(int& ra, int * pb)函数
这是一个软考和c++考试的一个经典面试题,给出5空,然后了,检测swap函数怎么写,主要考察的就是对于指针与引用的理解,难点为,很多人都不知道第三空填啥,因为我们通常写的c++的swap函数没有这一行,下面给出我的答案。
119 0
int 与 unsigned int
cpp primer  P31 带符号类型和不带符号类型   1、除去布尔型和扩展字符外,其他整型可以划分为带符号的(signed)和无符号的(unsigned)两种。
1167 0