|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
输入图片,按(800,600)等比例放大,
提示错误:'cv::copyMakeBorder'
哪位大侠可以指点一下?
不胜感激。
import cv2
def process_image(img,_H,_W):
size = img.shape
h, w = size[0], size[1]
#长边缩放为min_side
scale_h = max(range(h)) / float(_H)
scale_w = max(range(w)) / float(_W)
new_w, new_h = int(w/scale_w), int(h/scale_h)
resize_img = cv2.resize(img, (new_w, new_h))
# 填充至min_side * min_side
if new_w % 2 != 0 and new_h % 2 == 0:
top, bottom, left, right = (_H-new_h)/2, (_H-new_h)/2, (_W-new_w)/2 + 1, (_W-new_w)/2
elif new_h % 2 != 0 and new_w % 2 == 0:
top, bottom, left, right = (_H-new_h)/2 + 1, (_H-new_h)/2, (_W-new_w)/2, (_W-new_w)/2
elif new_h % 2 == 0 and new_w % 2 == 0:
top, bottom, left, right = (_H-new_h)/2, (_H-new_h)/2, (_W-new_w)/2, (_W-new_w)/2
else:
top, bottom, left, right = (_H-new_h)/2 + 1, (_H-new_h)/2, (_W-new_w)/2 + 1, (_W-new_w)/2
pad_img = cv2.copyMakeBorder(resize_img, int(top), int(bottom), int(left), int(right), cv2.BORDER_CONSTANT, value=[0,0,0])
return pad_img
if __name__ == '__main__':
image = cv2.imread('YEJ007.jpg')
img_new = process_image(image,800,600)
cv2.imwrite("YEJ_01.jpg",img_new)
cv2.imshow("YEJ_01.jpg", img_new)
cv2.waitKey() |
|