OpenCV for Python 学习笔记 一
本人的学习笔记主要记录的是学习opencv-python-tutorials这本书中的笔记
今天晚上简单学习OpenCV for Python如何绘图,主要用了这几个函数(这几个函数可在:http://docs.opencv.org/modules/core/doc/drawing_functions.html 找到):
cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])
cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])
cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])
cv2.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]])
一开始自己照抄书上代码,代码如下:
import numpy as np
import cv2 img = np.zeros((512,512,3), np.uint8)
img = cv2.line(img, (1,1),(510,510), (255,0,0),5)
img = cv2.rectangle(img, (200,100), (100,200), (0,255,0), 3)
img = cv2.circle(img, (100,100), 63, (0,0,255), -1)
img = cv2.ellipse(img, (256,256), (100,50), 0, 0, 180, 255, -1)
cv2.imshow('hello', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
总是在运行到cv2.imshow()这出错,错误代码:
error: (-215) size.width>0 && size.height>0 in function imshow
大致意思是要求img的尺寸必须是大于0的,可是书上是这么写的啊?
回想在C里面用OpenCV绘图时,直接调用绘图函数即可,貌似不需要加返回值,于是自己尝试着去掉返回值,每次都是直接在img上绘图,没有返回值
cv2.line(img, (1,1),(510,510), (255,0,0),5)
cv2.rectangle(img, (200,100), (100,200), (0,255,0), 3)
cv2.circle(img, (100,100), 63, (0,0,255), -1)
cv2.ellipse(img, (256,256), (100,50), 0, 0, 180, 255, -1)
果然就可以了
自己想了想,如果将返回值赋值img,那么img表示的应该是绘图是否成功的标志,而不是img本身了
上网搜了搜,在:http://docs.opencv.org/modules/core/doc/drawing_functions.html 找到了官网的注释,说这些函数的返回值都是None(难怪不能imshow)
这个问题解决了,开始绘制多边形
加了下面的代码:
pts = np.array([[10,5], [34,23],[231,54], [76,98]], np.uint8)
pts = pts.reshape((-1,1,2))
cv2.polylines(img, [pts], True, (0,255,255))
又出错。。
error: (-215) p.checkVector(2, CV_32S) >= 0 in function polylines
google之,http://stackoverflow.com/questions/11270250/what-does-the-python-interface-to-opencv2-fillpoly-want-as-input 解决方法如下:
将最后一行改成如下形式:
cv2.polylines(img, np.array([pts], np.int32), True, (0,255,255))
将[pts]转换成32int的numpy.array类型,就好了
至于此处的问题,大家自己理解吧,我这说不清楚
今天第一天,并没有多少硬货。加油!
OpenCV for Python 学习笔记 一的更多相关文章
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
- OpenCV for Python 学习笔记 二
今天主要看了OpenCV中的事件以及回调函数,这么说可能不准确,主要是下面这两个函数(OpenCV中还有很多这些函数,可以在 http://docs.opencv.org/trunk/modules/ ...
- OpenCV for Python 学习笔记 三
给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left, ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
随机推荐
- iOS--------手势识别的详细使用:拖动、缩放、旋转、点击、手势依赖、自定义手势
1.UIGestureRecognizer介绍 手势识别在iOS上非常重要,手势操作移动设备的重要特征,极大的增加了移动设备使用便捷性. iOS系统在3.2以后,为方便开发这使用一些常用的手势,提供了 ...
- BZOJ-1221 软件开发
这题是基于一道经典的费用流模型. 将每天拆成两个点i和j,新增源和汇并建立六种边: 1.从源出发到每个i点,flow为+∞,cost为每条新餐巾的价值,表示这一天所使用的餐巾中来自购买的餐巾 2.从源 ...
- 网抓(XML Http Request、VBA)实现
第一种,先看VBA Public Function GetInfo(strMoblie As String) As String '创建对象 Dim xmlHttp As Object Set xml ...
- jsp生成war
安装java 环境,进入jsp所在目录,使用如下命令可将当前目录中所有文件打成到xss.war包中,正常的war包中还包含另外两个文件meta-inf,web-inf,在生成的时候,需要把这两个文件加 ...
- 选择员工要有3S能力
企业的核心竞争力依托于高素质的员工.不断地对员工进行培训.提升并管理好员工,是让企业持续散发活力的一剂良药. 在企业里,有个说法叫三个房子有一个柱子,第一个是以人为本,怎么样吸引最优秀的员工:第二个是 ...
- QBXT 二月五号整理
给你一列数, 询问和最大的子串. N<=10^6 // N <=10^6 #include<cstdio> #include<iostream> using nam ...
- PXC集群资料整理
1.mysql集群方案对比 方案1 NDBCluster 参考:https://www.cnblogs.com/kevingrace/p/5685371.html?utm_source=itdad ...
- C# Array类的浅复制Clone()与Copy()的区别
1 Array.Clone方法 命名空间:System 程序集:mscorlib 语法: public Object Clone() Array的浅表副本仅复制Array的元素,无论他们是引用类型还是 ...
- MySQL的一个麻烦事
1. 开启一个MySQL连接,在这个连接中发起一个事务,进行一些操作但不提交 2. 拔网线 3. 重连网线,再开启一个MySQL连接,执行delete操作,发现stpe 1中占用的资源没有被释放 4. ...
- HDU 6464 权值线段树 && HDU 6468 思维题
免费送气球 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...