鱼C论坛

 找回密码
 立即注册
查看: 1218|回复: 2

cv2.resize用法

[复制链接]
发表于 2019-12-22 16:20:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-22 17:06:02 | 显示全部楼层
我复制过去可以直接运行啊

  1. import cv2

  2. def process_image(img,_H,_W):
  3.     size = img.shape
  4.     h, w = size[0], size[1]
  5.     #长边缩放为min_side
  6.     scale_h = max(range(h)) / float(_H)
  7.     scale_w = max(range(w)) / float(_W)
  8.     new_w, new_h = int(w/scale_w), int(h/scale_h)
  9.     resize_img = cv2.resize(img, (new_w, new_h))
  10.     # 填充至min_side * min_side
  11.     if new_w % 2 != 0 and new_h % 2 == 0:
  12.         top, bottom, left, right = (_H-new_h)/2, (_H-new_h)/2, (_W-new_w)/2 + 1, (_W-new_w)/2
  13.     elif new_h % 2 != 0 and new_w % 2 == 0:
  14.         top, bottom, left, right = (_H-new_h)/2 + 1, (_H-new_h)/2, (_W-new_w)/2, (_W-new_w)/2
  15.     elif new_h % 2 == 0 and new_w % 2 == 0:
  16.         top, bottom, left, right = (_H-new_h)/2, (_H-new_h)/2, (_W-new_w)/2, (_W-new_w)/2
  17.     else:
  18.         top, bottom, left, right = (_H-new_h)/2 + 1, (_H-new_h)/2, (_W-new_w)/2 + 1, (_W-new_w)/2
  19.     pad_img = cv2.copyMakeBorder(resize_img, int(top), int(bottom), int(left), int(right), cv2.BORDER_CONSTANT, value=[0,0,0])
  20.    
  21.     return pad_img

  22. if __name__ == '__main__':
  23.     image = cv2.imread('1.png')
  24.     img_new = process_image(image,800,600)
  25.     cv2.imwrite("YEJ_01.jpg",img_new)
  26.     cv2.imshow("00", img_new)
  27.     cv2.waitKey()
复制代码
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-22 17:44:32 | 显示全部楼层
哪里改动了?没变呀。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 06:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表