本人的学习笔记主要记录的是学习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 学习笔记 一的更多相关文章

  1. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  2. OpenCV for Python 学习笔记 二

    今天主要看了OpenCV中的事件以及回调函数,这么说可能不准确,主要是下面这两个函数(OpenCV中还有很多这些函数,可以在 http://docs.opencv.org/trunk/modules/ ...

  3. OpenCV for Python 学习笔记 三

    给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left, ...

  4. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  5. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  6. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  7. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  8. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  9. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

随机推荐

  1. 九度oj 题目1459:Prime ring problem

    题目描述: A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each ...

  2. adb shell am命令

    adb shell am命令是在cmd命令行可以通过命令来启动Activity,Boradcast,Service等,更多使用可以参考下面附件. 比如在cmd串口我们发送广播,广播action是&qu ...

  3. [bzoj2302][HNOI2011]problem c 递推,dp

    [HAOI2011]Problem c Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 949  Solved: 519[Submit][Status] ...

  4. Unity中LoadLevel与LoadLevelAsync的区别

    1.LoadLevel 同步加载 写法:Application.LoadLevel(“name”); 优点:读取场景使用同步的方法就可以,因为是同步方法所以读取的速度是最快的,也不用更新界面,因为同步 ...

  5. 【Visual Studio】VS2013的Release模式下进行调试(转)

    原文转自 http://blog.csdn.net/haizimin/article/details/50262901 在有的情况下,我们可能不能直接利用Debug模式进行程序调试,那么如何在Rele ...

  6. UML学习倒腾记

    先看到http://www.jianshu.com/p/1256e2643923这篇博客,号称21分钟入门uml,也许是我太笨了吧,一下午也没有完全搞定: 使用过atom编辑器,没有完全运行出来结果. ...

  7. C#学习笔记---区分StringWriter(Reader)和StreamWriter(Reader),TextWriter(Reader),BinaryWriter(Reader)

    1.TextWriter(Reader)分别是对连续字符系列处理的编写器(读写器),来自System.IO 2.StringWriter(Reader)继承TextWriter(Reader),它主要 ...

  8. 开发使用mysql的一些必备知识点整理(一)初阶

    简介 主要知识点包括:能够与mysql建立连接,创建数据库.表,分别从图形界面与脚本界面两个方面讲解 相关的知识点包括:E-R关系模型,数据库的3范式,mysql中数据字段的类型,字段约束 数据库的操 ...

  9. cmd 命令提示符常用操作

    切换盘符: d: 进入子目录: cd web 返回上级目录: cd .. 查询子目录下所有文件:dir

  10. Xamarin.Forms的相对布局RelativeLayout

    Xamarin.Forms的相对布局RelativeLayout   相对布局RelativeLayout是App中常用的布局方式.它是以界面中的某个元素为基准,设置另外一个元素的位置和大小.通过这种 ...