python进制简述

数字在计算机中表现的方式常见的有四种:十进制、二进制、八进制、十六进制

1.十进制

1)基数:0,1,2,3,4,5,6,7,8,9
2)进位:逢十进一
3)位权:10的n次方(n从低位到高位从0依次增加)
1231 = 110^3 + 210^2 + 310^1 + 110^0
4)程序中的表达方式:直接写

123
456

2.二进制

1)基数:0,1
1001001
2)进位:逢二进一

"""
10011 + 10111 = 110010
"""

3)位权:2的n次方
101011 = 2^5 + 2^3 + 2^1 + 2^0 = 43
4)程序中的表示方法:二进制前面加 0b 或者 0B

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Freeman链码算法是一种用于图像处理和计算机视觉的轮廓提取算法,用于表示2D图像的边界。它是通过在像素边界上移动,记录每个像素的位置相对于前一个像素的位置关系来生成链码。这个相对位置被编码为数字(0到7),这些数字组成了一个链码序列。 在Python中实现Freeman链码算法的过程可以简述如下: 1. 读取图像并将其转换为二进制格式。 2. 找到图像的边界,可以使用Canny边缘检测算法。 3. 在边界上移动,并使用Freeman链码规则记录每个像素的位置关系。 4. 将得到的链码序列保存。 以下是一些相关的Python代码示例: ``` import cv2 # 读取图像 img = cv2.imread('image.png', 0) # 边缘检测 edges = cv2.Canny(img, 100, 200) # 初始化链码序列 chaincode = [] # 找到起始点 start_point = None for i in range(edges.shape): for j in range(edges.shape): if edges[i, j] == 255: start_point = (i, j) break if start_point: break # 移动并记录链码 prev_point = start_point current_point = None while current_point != start_point: chain = '' for i in range(8): direction = (i + 7) % 8 dx, dy = cv2.polarToCart(1, direction * 45, angleInDegrees=True) x = prev_point + dx y = prev_point + dy if edges[int(y), int(x)] == 255: current_point = (int(y), int(x)) chain = str(direction) break prev_point = current_point chaincode.append(chain) # 保存链码序列 with open('chaincode.txt', 'w') as f: f.write(''.join(chaincode)) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值