用cv2实现小图片边缘扩充

#!/usr/bin/Python
# -*- coding: utf-8 -*-
import cv2
import numpy as np
from scipy.misc import imread
from PIL import Image

import os
'''
扩充图像边界
• src 输入图像
• top, bottom, left, right 对应边界的像素数目。
• borderType 要添加那种类型的边界,类型如下
    – cv2.BORDER_CONSTANT 添加有颜色的常数值边界,还需要下一个参数(value)。
    – cv2.BORDER_REFLECT 边界元素的镜像。比如: fedcba|abcde-fgh|hgfedcb
    – cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT跟上面一样,但稍作改动。例如: gfedcb|abcdefgh|gfedcba
    – cv2.BORDER_REPLICATE 重复最后一个元素。例如: aaaaaa|abcdefgh|hhhhhhh
    – cv2.BORDER_WRAP 不 知 道 怎 么 说 了, 就 像 这 样: cdefgh|abcdefgh|abcdefg
• value 边界颜色,如果边界的类型是 cv2.BORDER_CONSTANT
'''
BLACK=[0,0,0]
dir = '/media/bdke/dataset/img'#图片所放路径
imgList = os.listdir(dir)
num_imgs = len(imgList)
print num_imgs
count = 0
for i in xrange(0,num_imgs):
    count += 1
    imgPath = os.path.join(dir,imgList[i])
    #查看图片的宽和高
    #im = Image.open(imgPath)  # 返回一个Image对象
    # print('宽:%d,高:%d' % (im.size[0], im.size[1]))

    img = cv2.imread(imgPath)
    replicate = cv2.copyMakeBorder(img, 200, 200, 200, 200, cv2.BORDER_CONSTANT, value=BLACK)#上下左右边缘扩充200个像素点
    # newImgName = imgList[i][:-4] + "_ext.jpg"
    newImgName = imgList[i][:-4] + ".jpg"#扩充后的图片名
    dir_ext = '/media/bdke/dataset/ing_ext'#扩展之后图片的存放路径
    result_path = os.path.join(dir_ext, newImgName)
    cv2.imwrite(result_path, replicate)

    # 
    # print('宽:%d,高:%d' % (im.size[0], im.size[1]))
    # # 图片太小,扩展到500×500
    # if im.size[0]<400 and im.size[1]<400:
    #     # img = np.array(imread(imgPath))
    #     img = cv2.imread(imgPath)
    #     # replicate = cv2.copyMakeBorder(img, 200, 200, 200, 200, cv2.BORDER_REPLICATE)
    #     replicate = cv2.copyMakeBorder(img, (400-im.size[1])/2, (400-im.size[1])/2, (400-im.size[0])/2, (400-im.size[0])/2, cv2.BORDER_CONSTANT,value = BLACK)
    #     newImgName = imgList[i][:-4]+"_ext.jpg"
    #     result_path = os.path.join(dir,newImgName)
    #     cv2.imwrite(result_path, replicate)
print count

扩充之前的图片:

用(0,0,0)黑色扩充之后的图片:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值