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 相关文章推荐
Python实现程序的单一实例用法分析
Jun 03 Python
Python ftp上传文件
Feb 13 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
python爬虫面试宝典(常见问题)
Mar 02 Python
Anaconda入门使用总结
Apr 05 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
Django框架封装外部函数示例
May 28 Python
python腾讯语音合成实现过程解析
Aug 01 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
python设置中文界面实例方法
Oct 27 Python
使用Python解决图表与画布的间距问题
Apr 11 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
php MySQL与分页效率
2008/06/04 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
python局部赋值的规则
2013/03/07 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
《童年》教学反思
2014/02/18 职场文书
双拥工作宣传标语
2014/06/26 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
五一放假通知怎么写
2015/08/18 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
python实现简单的名片管理系统
2021/04/26 Python
解决golang结构体tag编译错误的问题
2021/05/02 Golang
python本地文件服务器实例教程
2021/05/02 Python