通过getPixel();和通过bmp.getPixels();方法遍历整张图片的效率比较。

如果要遍历一张图片的所有像素的(比如二值化),可以用两个 for 循环嵌套通过Bitmap中的getPixel(x,y)方法获取对应点的像素值即可。还有一种方法是通过Bitmap中的getPixels(pixels, offset, stride, x, y, width, height)方法获取一维数组pixels,然后在遍历pixels。经过测试,我发现后者方法遍历像素点效率大大高于前者。见如下示例:
// 获取一张宽384的图片,E为图片路径  
bmp = Utils.getSmallBitmap(E, 384);  
int w = bmp.getWidth();  
int h = bmp.getHeight();  
{  
    long start = System.currentTimeMillis();  
    for(int i=0;i<w;i++){  
        for(
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python的os和PIL库来实现这个功能。具体步骤如下: 1. 导入os和PIL库 ```python import os from PIL import Image ``` 2. 定义一个函数来比较两张图片的相似度 ```python def compare_images(image1, image2): # 打开两张图片 img1 = Image.open(image1) img2 = Image.open(image2) # 获取图片的大小 size1 = img1.size size2 = img2.size # 如果两张图片大小不相同,则返回0 if size1 != size2: return 0 # 计算每个像素点的差异值 diff = 0 for i in range(size1[0]): for j in range(size1[1]): pixel1 = img1.getpixel((i, j)) pixel2 = img2.getpixel((i, j)) diff += abs(pixel1[0] - pixel2[0]) diff += abs(pixel1[1] - pixel2[1]) diff += abs(pixel1[2] - pixel2[2]) # 计算平均差异值 diff /= (size1[0] * size1[1] * 3) # 返回相似度 return 1 - diff ``` 3. 遍历文件夹中的图片,并与前面的图片依次比较 ```python # 定义一个变量来保存前面的图片路径 prev_image = None # 遍历文件夹中的图片 for filename in os.listdir(folder_path): # 判断文件是否为图片 if filename.endswith('.jpg') or filename.endswith('.png'): # 构造图片的完整路径 image_path = os.path.join(folder_path, filename) # 如果是第一张图片,则直接赋值给prev_image if prev_image is None: prev_image = image_path continue # 比较当前图片和前面的图片的相似度 similarity = compare_images(prev_image, image_path) # 输出相似度 print(f'{prev_image} 和 {image_path} 的相似度为:{similarity}') # 将当前图片路径赋值给prev_image,用于下一次比较 prev_image = image_path ``` 注意,以上代码只是一个示例,实际使用时需要根据具体情况进行修改和调试。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值