python画十字_用OpenCV在图像上画十字
我认为最好是全局保存坐标,而不是使用一堆高标度/低标度。它们让我头疼,可能会因为舍入而失去精确性。在
也就是说,每次检测到某个对象时,首先将其转换为全局(原始图像)坐标。我在这里写了一个小的演示,模仿你的检测和{}行为。在
初始检测:
放大,另一个检测:
放大,另一个检测:
放大,另一个检测:
放大到原始比例,检测箱位于正确位置
代码:import cv2
import matplotlib.pyplot as plt
IMG_SIZE = 224
im = cv2.cvtColor(cv2.imread('lena.jpg'), cv2.COLOR_BGR2GRAY)
im = cv2.resize(im, (IMG_SIZE, IMG_SIZE))
# Your detector results
detected_region = [
[(10, 20) , (80, 100)],
[(50, 0) , (220, 190)],
[(100, 143) , (180, 200)],
[(110, 45) , (180, 150)]
]
# Global states
x_scale = 1.0
y_scale = 1.0
x_shift = 0
y_shift = 0
x1, y1 = 0, 0
x2, y2 = IMG_SIZE-1, IMG_SIZE-1
for region in detected_region:
# Detection
x_scale = IMG_SIZE / (x2-x1)
y_scale = IMG_SIZE / (y2-y1)
x_shift = x1
y_shift = y1
cur_im = cv2.resize(im[y1:y2, x1:x2], (IMG_SIZE, IMG_SIZE))
# Assuming the detector return these results
cv2.rectangle(cur_im, region[0], region[1], (255))
plt.imshow(cur_im)
plt.show()
# Zooming in, using part of your code
context_pixels = 16
x1 = max(region[0][0] - context_pixels, 0) / x_scale + x_shift
y1 = max(region[0][1] - context_pixels, 0) / y_scale + y_shift
x2 = min(region[1][0] + context_pixels, IMG_SIZE) / x_scale + x_shift
y2 = min(region[1][1] + context_pixels, IMG_SIZE) / y_scale + y_shift
x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
# Assuming the detector confirm its choice here
print('Confirmed detection: ', x1, y1, x2, y2)
# This time no padding
x1 = detected_region[-1][0][0] / x_scale + x_shift
y1 = detected_region[-1][0][1] / y_scale + y_shift
x2 = detected_region[-1][1][0] / x_scale + x_shift
y2 = detected_region[-1][1][1] / y_scale + y_shift
x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
cv2.rectangle(im, (x1, y1), (x2, y2), (255, 0, 0))
plt.imshow(im)
plt.show()
这也可以防止在调整大小的图像上调整大小,这可能会产生更多的伪影并恶化探测器的性能。在
python画十字_用OpenCV在图像上画十字相关推荐
- OpenCV在图像上画线、矩形、椭圆、多边形、填充的多边形、圆、显示文字
OpenCV在图像上随机画直线.椭圆.多边形.圆.显示文字 代码如下: /*** @file Drawing_2.cpp* @brief Simple sample code*/#include &l ...
- python opencv在图像上画点和圆
利用 opencv 里自带的 circle() 函数可以绘制以一个点为圆心特定半径的圆,其函数的声明如下: cv2.circle(img, center, radius, color[, thickn ...
- OpenCV circle图像上画圆
OpenCV中circle与rectangle函数显示,只不过rectangle在图像中画矩形,circle在图像中画圆. void circle(Mat img, Point center, int ...
- OpenCV在图像上画正弦曲线(c++)
写在前面:欢迎来到「湫歌」的博客.我是秋秋,一名普通的在校大学生.在学习之余,用博客来记录我学习过程中的点点滴滴,也希望我的博客能够更给同样热爱学习热爱技术的你们带来收获!希望大家多多关照,我们一起成 ...
- 在yuv上画线_利用布雷森汉姆算法绘制在YUV图像上画直线
最近,因工作需要,在YUV图像上画直线: 算法1步骤: 1.已知直线的起点和终点: 2. 利用布雷森汉姆算法在两点间画直线: 3. 将该直线上的点的颜色在YUV图像上画出. 布雷森汉姆算法原理参考wi ...
- opencv3_java 在已有的图像上画圆圈 CircleOnImg
在已有的图像上画圆圈 CircleOnImg package opencv_java_demo;import org.opencv.core.*; import org.opencv.imgcodec ...
- 【目标检测】在图像上画bounding box框,生成带真实标签gt的图片
[目标检测]在图像上画bounding box框,生成带真实标签gt的图片 问题/Motivation 数据格式 用到的库 实际代码` 结果展示 问题/Motivation 在制作完数据集后,想看一下 ...
- OpenCV在图像上添加边框borders
OpenCV在图像上添加边框borders 在图像上添加边框borders 目标 理论 代码 解释 声明变量 载入图片 创建一个窗口 初始化参数 环形loop 颜色随机 在图像周围形成边框 结果 在图 ...
- matlab 图像上画椭圆 保持原来图像分辨率
一. 问题 在真实图像上画椭圆后,保存的图像要不有空白边界要不分辨率大小和原图不一样. 二. 解决方法 利用 figure 的 border 属性 Im2=imread('image\egg.jpg' ...
最新文章
- CISCO设备上DHCP实例
- excel 粘贴了HTML怎么删掉,Excel怎么删除网页上复制删不掉的文本框
- jdk jenkins 配置ant_安装配置maven、ant(Jenkins)
- 中秋我用CSS写了个嫦娥奔月
- linux文件创建、查看、编辑命令
- MySQL基础之DML语句
- c程序编写x的y次方的方法
- node.js 和 HTML5-Canvas 结合实现截图上传交互
- 【转】ABP源码分析九:后台工作任务
- 不会卸载MySQL?我连夜肝了一篇教你如何干干净净地卸载掉MySQL
- 数学建模 分支限界算法求解整数规划原理以及编程实现
- Ubuntu全盘备份与恢复
- NetSuite二次开发服务改变中小企业发展困境!
- C# 生成验证码 方法一
- 用python建云盘_实用的Python(3)超简单!基于Python搭建个人“云盘”
- 从信号转换角度研究血压(波形)预测的相关论文
- 服务器怎么装虚拟打印机,pdfFactory pdf虚拟打印机安装使用教程[图文]
- 第二届天府大地艺术季(春)三道堰青杠树村分会场开幕
- db2 系统临时表空间
- 学习深度学习过程中的一些经验与方法
热门文章
- 迪士尼拟调整首席执行官薪酬方案:削减1350万美元薪酬和奖励
- java动态方法_Java 动态方法调用
- C语言:利用time函数的定时器
- tp5如何在模板格式化显示时间_华为手机如何才能息屏显示时间?手把手教你,一秒就能学会...
- 如何更安全高效地翻译外文资料?
- 如何用matlab进行脑电信号处理,基于matlab的脑电信号处理
- Synopsys SV Lab Guide—router简介
- NC212914 牛牛与后缀表达式
- 石油勘探是属于计算机应用中的,计算机在石油勘探开发中的应用
- CSS 滚动条样式【兼容chrome、Firefox、IE】