写代码前要想好

7 篇文章 0 订阅
5 篇文章 0 订阅

写了一个文件压缩器,用哈夫曼编码,走了很多弯路,原因在于未能真正理解哈夫曼编的实质。

 

1. 原来哈夫曼编码是可以连续在一起的。

例如,'c'的编码是 01, b 的编码是 00, 那么字符串 'bc'的编码就是‘0001’, 注意,中间是不用空格或其他字符作为标识的。

 

一开始我以为要,但未想清楚,直到看了书才知道。

 

2. 出现这个的根本原因在于,过于匆忙地写代码,未能事先理解算法的本质。

 

劳力是有限的,所以不能一味死干。

 

聪明地干,先思考,再干活。

 

 

3. 关于二制进,要想好,到底是先移位还是先累加。

 

4. c++ 中, int 类型是 4 个字节, char 是 一个字节

 

5. 程序的算法错误多数出现在循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里是一个简单易懂的代码,它可以读取任意数量的图像,并对每个图像进行傅里叶变换,最后将它们的频率分量相加并显示出来。 ```python import numpy as np import cv2 # 定义读取图像的函数 def read_images(*img_paths): # 读取所有图像 images = [cv2.imread(path, cv2.IMREAD_GRAYSCALE) for path in img_paths] # 返回图像列表 return images # 定义进行傅里叶变换的函数 def fft_transform(img): # 进行傅里叶变换 f = np.fft.fft2(img) fshift = np.fft.fftshift(f) magnitude_spectrum = 20 * np.log(np.abs(fshift)) # 返回频率分量 return magnitude_spectrum # 定义主函数 def main(): # 读取图像 images = read_images('image1.jpg', 'image2.jpg', 'image3.jpg') # 进行傅里叶变换并相加 sum_spectrum = None for img in images: # 进行傅里叶变换 spectrum = fft_transform(img) # 将频率分量相加 if sum_spectrum is None: sum_spectrum = spectrum else: sum_spectrum += spectrum # 显示结果 cv2.imshow('spectrum', sum_spectrum) cv2.waitKey(0) cv2.destroyAllWindows() if __name__ == '__main__': main() ``` 这个代码中,我们首先定义了一个新的函数 `read_images`,它可以读取任意数量的图像,并返回它们的列表。然后,我们修改了 `fft_transform` 函数来进行傅里叶变换,并返回频率分量。最后,在主函数中,我们读取所有图像,对每个图像进行单独的傅里叶变换,并将它们的频率分量相加。最后,我们显示了相加后的频率分量。 请注意,这个代码仅仅是一个示例,你可以根据自己的需求进行修改。另外,如果你读取更多的图像,只需要在调用 `read_images` 函数时,传递更多的图像路径即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值