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/ ...
随机推荐
- HashMap源码分析jdk1.6
HashMap数组每个元素的初始值为NULL 1.定义 public interface Map<K,V> { int size(); boolean isEmpty(); boolea ...
- [luoguP1640] [SCOI2010]连续攻击游戏(二分图最大匹配)
传送门 我们将每一个属性和物品连边,然后枚举从小到大属性跑匈牙利,直到找不到连边 #include <cstdio> #include <cstring> #include & ...
- docker 镜像阿里加速器
1.登录 https://cr.console.aliyun.com/#/imageList 2.点击加速器tab,获取自己的加速器地址,然后执行黑框内的命令. .sudo mkdir -p /etc ...
- FZOJ Problem 2219 StarCraft
...
- gridview中的相关事件操作
原文发布时间为:2008-07-27 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- POJ 3468:A Simple Problem with Integers(线段树[成段更新])
题意:N个数Q次操作.一共两种操作:Q l r :询问[l,r]这个区间里的数字和,C l r c: [l,r]区间里的每个数都加上c.1 ≤ N,Q ≤ 100000. 方法:线段树的成段更新.注意 ...
- hdu 5701(区间查询思路题)
中位数计数 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- 回调函数 typedef bool (*IsUsed)(const string &name,boost::shared_ptr<ShpGeometry> oneGeometry);
就是指向函数的指针. 回调函数,表示了一个函数的地址,将函数作为参数进行使用.参考百度百科:http://baike.baidu.com/view/414773.htm 常用的大概就是在sort函数中 ...
- [翻译] NumSharp的数组切片功能 [:]
原文地址:https://medium.com/scisharp/slicing-in-numsharp-e56c46826630 翻译初稿(英文水平有限,请多包涵): 由于Numsharp新推出了数 ...
- Java并发编程实战 读书笔记(一)
最近在看多线程经典书籍Java并发变成实战,很多概念有疑惑,虽然工作中很少用到多线程,但觉得还是自己太弱了.加油.记一些随笔.下面简单介绍一下线程. 一 线程与进程 进程与线程的解释 个人觉 ...