批量使用opencv对图像等分后合成新图

本文主要分为两个部分

1)对图像进行等分,可以根据rowNum与colNum 变化等分区域。

2)批量处理。

首先是等分代码:

def imgSplit(pth,rowNum,colNum):
    src = cv2.imread(pth, -1)
    subImages = []
    splitRowNum = rowNum #x方向切几段
    splitColNum = colNum #y方向切几段

    imgHeight, imgWidth = src.shape[0], src.shape[1]

    subHeight = imgHeight//splitColNum #高
    subWidth = imgWidth//splitRowNum   #宽
    for indexCol in range(splitColNum):
        for indexRow in range(splitRowNum):
            if indexCol < splitColNum - 1 and indexRow < splitRowNum - 1:
                image_roi = src[indexCol * subHeight: (indexCol + 1) * subHeight, indexRow * subWidth: (i + 1) * subWidth] #, :
            elif indexCol < splitColNum - 1:
                image_roi = src[indexCol * subHeight: (indexCol + 1) * subHeight, indexRow * subWidth:] #, :
            elif indexRow < splitRowNum - 1:
                image_roi = src[indexCol * subHeight:, indexRow * subWidth: (indexRow + 1) * subWidth]#, :
            else:
                image_roi = src[indexCol * subHeight:, indexRow * subWidth:] #, :
            subImages.append(image_roi)

    return subImages #返回数组处理

其次是后续的批处理代码:

if __name__ == '__main__':

    imgPthSrc = r"C:/Users/asus/Desktop/src/" #源路径
    imgPthDir = r"C:/Users/asus/Desktop/dir/" #目标路径
    srcPthlist = os.listdir(imgPthSrc)

    for subClass in srcPthlist:
        pthSubClass = os.path.join(imgPthSrc, subClass)
        subClasslist = os.listdir(pthSubClass)
        for img in subClasslist:
            imgPth = os.path.join(pthSubClass, img)

            subImages = imgSplit(imgPth, 1, 2)

            g, b = subImages[0], subImages[1]
            r = np.zeros(b.shape, dtype=np.uint8)  #由于需要处理的图片只有两场图,增加一场图合成3通道图像
            b[0:g.shape[0], 0:g.shape[1]] = 30

            imgMerge = cv2.merge((r, g, b))
            curImagePath = os.path.join(imgPthDir,subClass)

            if os.path.exists(curImagePath):
                cv2.imwrite(curImagePath+'/' +img , imgMerge)
            else:
                os.makedirs(curImagePath)
                cv2.imwrite(curImagePath+'/' +img, imgMerge)

批处理大概的效果是:

 单图类似的效果是,其中红色和绿色代表单通道的一场图,黄色为rgb3通道图:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值