[代码记录]得到篡改图的mask

记录下。

import cv2
import numpy as np
import os
import re

# 腐蚀膨胀操作
def erode_dilate(img, num1, num2):
    erode = cv2.erode(img, None, iterations=num1)
    dilate = cv2.dilate(erode, None, iterations=num2)
    return dilate

# mask获取,主要运用cv2的absdiff函数
def get_mask(fake_img, real_img):
    # 转化为灰度图像
    img1 = cv2.cvtColor(fake_img, cv2.COLOR_RGB2GRAY)
    img2 = cv2.cvtColor(real_img, cv2.COLOR_RGB2GRAY)
    mask = cv2.absdiff(img1, img2)
    mask = ~mask # 取反 mask区域为黑
    # 阈值
    _, mask = cv2.threshold(mask, 248, 255, cv2.THRESH_BINARY)
    mask = erode_dilate(mask, 2, 2)
    return mask


if __name__ == "__main__":
    fake_path = "fake/"
    real_path = "real/"
    mask_path = "mask/"
    fake_list = os.listdir(fake_path)
    real_list = os.listdir(real_path)
    # 这里我是根据文件名特点来查找图片的
    for fake_name in fake_list:
        fake_img_path = fake_path + fake_name
        fake_img = cv2.imread(fake_img_path)
        match_fake_name = re.findall("\d+", fake_name)[0]

        for real_name in real_list:
            match_real_name = re.findall("\d+", real_name)[0]
            if match_fake_name == match_real_name:
                real_img_path = real_path + real_name
                real_img = cv2.imread(real_img_path)
                mask = get_mask(fake_img, real_img)
                mask_path = mask_path + fake_name.split(".")[0] + "_mask.jpg"
                cv2.imwrite(mask_path, mask)
            else:
                continue

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
篡改检测是指通过计算机视觉技术来检测像中是否存在篡改或伪造的情况。而PyTorch是一个流行的开源深度学习框架,可以帮助我们构建神经网络来实现篡改检测。 首先,我们可以使用PyTorch加载已经训练好的深度学习模型,如ResNet、VGG等,这些模型在像分类任务上有很好的表现。然后,我们可以在这些模型的基础上进行微调,使其适用于篡改检测任务。微调的过程包括修改网络的结构、调整超参数以及加载我们自己的数据集进行训练。 其次,我们需要准备用于篡改检测的数据集。这些数据集包括原始的真实像和各种类型的篡改像,如复制粘贴、涂改、伪造等。我们可以使用PyTorch提供的数据加载工具来加载和预处理这些像数据。 然后,我们可以使用PyTorch提供的损失函数和优化器来定义损失函数和优化方法。对于篡改检测任务,我们可以选择适合的损失函数比如交叉熵损失,并选择合适的优化器比如Adam优化器来训练模型。 最后,我们可以通过PyTorch提供的训练循环来训练我们的篡改检测模型,并通过验证集来评估模型的性能。一旦模型训练好了,我们可以使用它来检测像中的篡改,并输出相应的结果。 总之,通过PyTorch编写篡改检测的代码需要加载预训练模型、准备数据集、定义损失函数和优化器,然后通过训练来实现篡改检测的功能。希望以上回答能够满足您的需求,如有不足之处,还请指正。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值