Python在OpenCV里实现极坐标变换功能
在中学里学习过直角坐标系,也叫做笛卡尔坐标系,它是正交坐标系,不过也学习过极坐标系,这种坐标系比较适合大炮发射的场合。极坐标系的定义如下:
在 平面内取一个定点O, 叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向)。对于平面内任何一点M,用ρ表示线段OM的长度,θ表示从Ox到OM的角度,ρ叫做点M的极径,θ叫做点M的极角,有序数对 (ρ,θ)就叫点M的极坐标,这样建立的坐标系叫做极坐标系。
极坐标很方便应用到雷达上面,因为雷达不断地转动,反射回来的波计算出距离,再与转动的角度,就构成一个二维图的坐标了。也有人采用这样雷达图来表示公式的销售业绩,这样方便比较不同人的结果,可以看出每个人的差距。下面就使用python和matplotlib实现这样的绘图,让我们对极坐标有一个明确的理解,以便后面展开从直角坐标到极坐标的变换学习,这个例子代码如下:
#python 3.7.4,opencv4.1 #蔡军生 https://blog.csdn.net/caimouse/article/details/51749579 # import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 employee = ["张三", "李四", "蔡大", "庞二", "林五"] actual = [45, 53, 55, 61, 57, 45] expected = [50, 55, 60, 65, 55, 50] # 设置图形大小和极坐标方式显示 plt.figure(figsize=(5, 5)) plt.subplot(polar=True) #角度坐标生成 theta = np.linspace(0, 2 * np.pi, len(actual)) # 设置极坐标的标记 lines, labels = plt.thetagrids(range(0, 360, int(360/len(employee))), (employee)) # 在极坐标显示销售数值 plt.plot(theta, actual) plt.fill(theta, actual, 'b', alpha=0.1) # 极坐标显示期望销售数值 plt.plot(theta, expected) # 添加标注和标题 plt.legend(labels=('实际值', '期望值'), loc=1) plt.title("实际值 与 期望值对比") # 显示点到屏幕 plt.show()
输出结果如下:
总结
以上所述是小编给大家介绍的Python在OpenCV里实现极坐标变换功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
相关推荐
-
python和opencv实现抠图
本文实例为大家分享了python实现抠图的具体代码,供大家参考,具体内容如下 其中使用了opencv中的grabcut方法 直接上代码 # encoding:utf-8 # 图像提取 # create by import numpy as np import cv2 from matplotlib import pyplot as plt img = cv2.imread('1.jpg') mask = np.zeros(img.shape[:2], np.uint8) bgdModel = n
-
对python opencv 添加文字 cv2.putText 的各参数介绍
如下所示: cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3) 各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细 其中字体可以选择 FONT_HERSHEY_SIMPLEX Python: cv.FONT_HERSHEY_SIMPLEX normal size sans-serif font FONT_HERSHEY_PLAIN Python: cv.FONT_HERSHEY_PLAIN small s
-
OpenCV+python手势识别框架和实例讲解
基于OpenCV2.4.8和 python 2.7实现简单的手势识别. 以下为基本步骤 1.去除背景,提取手的轮廓 2. RGB->YUV,同时计算直方图 3.进行形态学滤波,提取感兴趣的区域 4.找到二值化的图像轮廓 5.找到最大的手型轮廓 6.找到手型轮廓的凸包 7.标记手指和手掌 8.把提取的特征点和手势字典中的进行比对,然后判断手势和形状 提取手的轮廓 cv2.findContours() 找到最大凸包cv2.convexHull(),然后找到手掌和手指的相对位置,定位手型的轮廓和关键点
-
Python+OpenCV感兴趣区域ROI提取方法
方法一:使用轮廓 步骤1 """src为原图""" ROI = np.zeros(src.shape, np.uint8) #感兴趣区域ROI proimage = src.copy() #复制原图 """提取轮廓""" proimage=cv2.cvtColor(proimage,cv2.COLOR_BGR2GRAY) #转换成灰度图 proimage=cv2.adaptiveThre
-
opencv python 图像去噪的实现方法
在早先的章节里,我们看到很多图像平滑技术如高斯模糊,Median模糊等,它们在移除数量小的噪音时在某种程度上比较好用.在这些技术里,我们取像素周围的一小部分邻居,做一些类似于高斯平均权重,中值等替换掉中间的元素.简单说,移除一个像素的噪音是基于本地邻居的. 噪音有一个属性,噪音一般被认为是具有零平均值的随机变量.假设一个像素噪音,p = p0 + n, 其中p0是像素的真实值,n是那个像素的噪音.你可以从不同图像取大量的同一个像素(N)并计算他们的平均值,理想情况下,你应该得到p=p0,因为均值
-
Python3.7中安装openCV库的方法
1.首先自己直接在cmd中输入 pip3 install openCV是不可行的,即需要自己下载安装包本地安装 2.openCV库 下载地址http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv 3.opencv_python‑3.4.2‑cp37‑cp37m‑win_amd64.whl(cp37指的是python的版本,win_amd64是指python是64位的,也有可能有人64位的系统装了32位的python,这时候就需要装win32的版本) 4
-
Python在OpenCV里实现极坐标变换功能
在中学里学习过直角坐标系,也叫做笛卡尔坐标系,它是正交坐标系,不过也学习过极坐标系,这种坐标系比较适合大炮发射的场合.极坐标系的定义如下: 在 平面内取一个定点O, 叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向).对于平面内任何一点M,用ρ表示线段OM的长度,θ表示从Ox到OM的角度,ρ叫做点M的极径,θ叫做点M的极角,有序数对 (ρ,θ)就叫点M的极坐标,这样建立的坐标系叫做极坐标系. 极坐标很方便应用到雷达上面,因为雷达不断地转动,反射回来的波计算出距
-
Python 在OpenCV里实现仿射变换—坐标变换效果
在现实的图像操作软件中,经常碰到的不是给出放大多少倍,而是由用户在软件的界面上选择多大的区域,或者选择几个点,那么这样情况下,怎么样来计算出变换矩阵呢?从前面知道变换矩阵是2X3的矩阵,说明有六个未知数,又有中学的代数知识知道要解决六个未知数,那么方程组至少要联立三条方程,要准备三条方程的先决条件,就是要有三组坐标.因此,只要在用户选择的区域里找到三个不同点的坐标,就可以计算出变换矩阵.如果给出三组坐标[0, 0], [200, 0], [0, 200],通过变换之后新坐标是[0, 0], [1
-
python在OpenCV里实现投影变换效果
前面学习了仿射变换,是经常使用到的变换,也很容易理解.在日常生活中,经常会遇到下面这种的情况: 仔细地观察比亚迪秦这台汽车的车牌,发现它拍照的角度不是垂直的方向,而是有一个角度,当要进行车牌识别的时候,发现字符是变形的,与电脑里比较的图片肯定有区别,因此识别不出来.这时怎么办呢?就需要经过一个投影变换才可以把车牌号纠正过来,才能进入识别过程. 好吧,到这里认识到投影变换的感性认识了,那么你又会继续考虑下一个问题,在软件里怎么样计算呢,难道还是使用仿射变换的矩阵.从这里看一下,前面闽A比较大,后面
-
Python基于opencv实现的简单画板功能示例
本文实例讲述了Python基于opencv实现的简单画板功能.分享给大家供大家参考,具体如下: import cv2 import numpy as np drawing = False # true if mouse is pressed ix,iy = -1,-1 def nothing(x): pass # mouse callback function def draw_circle(event,x,y,flags,param): global ix,iy,drawing g = par
-
python+mediapipe+opencv实现手部关键点检测功能(手势识别)
目录 一.mediapipe是什么? 二.使用步骤 1.引入库 2.主代码 3.识别结果 补充: 一.mediapipe是什么? mediapipe官网 二.使用步骤 1.引入库 代码如下: import cv2 from mediapipe import solutions import time 2.主代码 代码如下: cap = cv2.VideoCapture(0) mpHands = solutions.hands hands = mpHands.Hands() mpDraw = so
-
Python使用OpenCV对图像进行缩放功能
OpenCV:图片缩放和图像金字塔 对图像进行缩放的最简单方法当然是调用resize函数啦! resize函数可以将源图像精确地转化为指定尺寸的目标图像. 要缩小图像,一般推荐使用CV_INETR_AREA来插值:若要放大图像,推荐使用CV_INTER_LINEAR. 现在说说调用方式 第一种,规定好你要图片的尺寸,就是你填入你要的图片的长和高. #include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp> u
-
python调用opencv实现猫脸检测功能
Python 小猫检测,通过调用opencv自带的猫脸检测的分类器进行检测. 分类器有两个:haarcascade_frontalcatface.xml和 haarcascade_frontalcatface_extended.xml.可以在opencv的安装目录下找到 D:\Program Files\OPENCV320\opencv\sources\data\haarcascades 小猫检测代码为: 1. 直接读取图片调用 import cv2 image = cv2.imread("ca
-
python利用Opencv实现人脸识别功能
本文实例为大家分享了python利用Opencv实现人脸识别功能的具体代码,供大家参考,具体内容如下 首先:需要在在自己本地安装opencv具体步骤可以问度娘 如果从事于开发中的话建议用第三方的人脸识别(推荐阿里) 1.视频流中进行人脸识别 # -*- coding: utf-8 -*- import cv2 import sys from PIL import Image def CatchUsbVideo(window_name, camera_idx): cv2.namedWindow(w
-
Python下opencv使用hough变换检测直线与圆
在数字图像中,往往存在着一些特殊形状的几何图形,像检测马路边一条直线,检测人眼的圆形等等,有时我们需要把这些特定图形检测出来,hough变换就是这样一种检测的工具. Hough变换的原理是将特定图形上的点变换到一组参数空间上,根据参数空间点的累计结果找到一个极大值对应的解,那么这个解就对应着要寻找的几何形状的参数(比如说直线,那么就会得到直线的斜率k与常熟b,圆就会得到圆心与半径等等). 关于hough变换,核心以及难点就是关于就是有原始空间到参数空间的变换上.以直线检测为例,假设有一条直线L,
-
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
本文实例讲述了Python编程实现两个文件夹里文件的对比功能.分享给大家供大家参考,具体如下: #-*-coding:utf-8-*- #=============================================================================== # 目录对比工具(包含子目录 ),并列出 # 1.A比B多了哪些文件 # 2.B比A多了哪些文件 # 3.二者相同的文件:文件大小相同 VS 文件大小不同 (Size相同文件不打印:与Size不同文件显
随机推荐
- AngularJS中处理多个promise的方式
- Go语言算法之寻找数组第二大元素的方法
- JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
- 破解Vista激活机制三大方法总结
- VBS教程:属性-Drive 属性
- 利用java反射机制调用类的私有方法(推荐)
- ruby开发vim插件小结
- 零基础学JavaScript最新动画教程+iso光盘下载
- PHP session会话操作技巧小结
- 关于《精通css》之几个不错的注意事项
- jQuery常用操作方法及常用函数总结
- SQLServer 数据库故障修复顶级技巧之一
- 快速使用Bootstrap搭建传送带
- javascript 随机展示头像实现代码
- IT世界与金山周末联合预报1225
- js微信分享API
- 探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
- 使用PHP实现下载CSS文件中的图片
- Java反射之Call stack introspection详解
- 详解如何更好的使用module vuex