python实现图像随机裁剪的示例代码


Posted in Python onDecember 10, 2020

实验条件:

  1. 从1张图像随机裁剪100张图像
  2. 裁剪出图像的大小为 60 x 60
  3. IoU 大于等于 th=0.6 的裁剪框用红色标出,其它裁剪框用蓝色标出
  4. IoU 比对原始区域用绿框标出

实验代码:

import cv2 as cv 
import numpy as np

np.random.seed(0)

# get IoU overlap ratio
def iou(a, b):
	# get area of a
 area_a = (a[2] - a[0]) * (a[3] - a[1])
	# get area of b
 area_b = (b[2] - b[0]) * (b[3] - b[1])

	# get left top x of IoU
 iou_x1 = np.maximum(a[0], b[0])
	# get left top y of IoU
 iou_y1 = np.maximum(a[1], b[1])
	# get right bottom of IoU
 iou_x2 = np.minimum(a[2], b[2])
	# get right bottom of IoU
 iou_y2 = np.minimum(a[3], b[3])

	# get width of IoU
 iou_w = iou_x2 - iou_x1
	# get height of IoU
 iou_h = iou_y2 - iou_y1

	# get area of IoU
 area_iou = iou_w * iou_h
	# get overlap ratio between IoU and all area
 iou = area_iou / (area_a + area_b - area_iou)

 return iou


# crop and create database
def crop_bbox(img, gt, Crop_N=200, L=60, th=0.5):
 # get shape
 H, W, C = img.shape

 # each crop
 for i in range(Crop_N):
  # get left top x of crop bounding box
  x1 = np.random.randint(W - L)
  # get left top y of crop bounding box
  y1 = np.random.randint(H - L)
  # get right bottom x of crop bounding box
  x2 = x1 + L
  # get right bottom y of crop bounding box
  y2 = y1 + L

  # crop bounding box
  crop = np.array((x1, y1, x2, y2))

  # get IoU between crop box and gt
  _iou = iou(gt, crop)

  # assign label
  if _iou >= th:
   cv.rectangle(img, (x1, y1), (x2, y2), (0,0,255), 1)
   label = 1
  else:
   cv.rectangle(img, (x1, y1), (x2, y2), (255,0,0), 1)
   label = 0

 return img

# read image
img = cv.imread("../xiyi.jpg")
img1 = img.copy()
# gt bounding box
gt = np.array((87, 51, 169, 113), dtype=np.float32)

# get crop bounding box
img = crop_bbox(img, gt, Crop_N=100, L=60, th=0.6)

# draw gt
cv.rectangle(img, (gt[0], gt[1]), (gt[2], gt[3]), (0,255,0), 1)
cv.rectangle(img1,(gt[0], gt[1]), (gt[2], gt[3]), (0,255,0), 1)

cv.imshow("result1",img1)
cv.imshow("result", img)
cv.imwrite("out.jpg", img)
cv.waitKey(0)
cv.destroyAllWindows()

实验结果:

python实现图像随机裁剪的示例代码

以上就是python实现图像随机裁剪的示例代码的详细内容,更多关于python 图像裁剪的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
python爬虫常用的模块分析
Aug 29 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
深入解析Python中的上下文管理器
Jun 28 Python
python字典快速保存于读取的方法
Mar 23 Python
kafka-python批量发送数据的实例
Dec 27 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
python机器学习库scikit-learn:SVR的基本应用
Jun 26 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
python 读取数据库并绘图的实例
Dec 03 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 #Python
python 实现的IP 存活扫描脚本
Dec 10 #Python
class类在python中获取金融数据的实例方法
Dec 10 #Python
Python制作简单的剪刀石头布游戏
Dec 10 #Python
python给list排序的简单方法
Dec 10 #Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 #Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 #Python
You might like
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
JavaScript 字符串连接性能优化
2008/12/20 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
javascript是怎么继承的介绍
2012/01/05 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
python实现在目录中查找指定文件的方法
2014/11/11 Python
八大排序算法的Python实现
2021/01/28 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
python生成n个元素的全组合方法
2018/11/13 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
yy生日主持词
2014/03/20 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS