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的内存泄漏及gc模块的使用分析
Jul 16 Python
python求列表交集的方法汇总
Nov 10 Python
Python日志模块logging简介
Apr 13 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
python占位符输入方式实例
May 27 Python
python数据挖掘需要学的内容
Jun 23 Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 Python
Django choices下拉列表绑定实例
Mar 13 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
OpenCV 之按位运算举例解析
Jun 19 Python
pycharm无法安装cv2模块问题
May 20 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实现递归的三种基本方式
2020/07/04 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
python选择排序算法实例总结
2015/07/01 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
用Python写一个自动木马程序
2019/09/17 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
python温度转换华氏温度实现代码
2020/12/06 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
计算机专业职业生涯规划范文
2014/01/19 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
2014年社区工作总结
2014/11/18 职场文书
计划生育汇报材料
2014/12/26 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL