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 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
Python处理json字符串转化为字典的简单实现
Jul 07 Python
关于numpy中np.nonzero()函数用法的详解
Feb 07 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
python字符串和常用数据结构知识总结
May 21 Python
python 批量解压压缩文件的实例代码
Jun 27 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
Jun 03 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 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获取MAC地址的函数代码
2011/09/11 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
JavaScript 大数据相加的问题
2011/08/03 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
Selenium的使用详解
2018/10/19 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
Django的CVB实例详解
2020/02/10 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
Python类的继承super相关原理解析
2020/10/22 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
html5实现滑块功能之type="range"属性
2020/02/18 HTML / CSS
会计个人实习计划书
2014/08/15 职场文书
健康教育主题班会
2015/08/14 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
MySQL基于索引的压力测试的实现
2021/11/07 MySQL