使用opencv-python一段时间了,因为之前没有大量接触过c++下的opencv,在网上看c++的一些程序想改成python遇到了不少坑,正好在这里总结一下。

  • 1.opencv 中x,y,height, width,rows,cols 的关系(转自http://blog.csdn.net/ikerpeng/article/details/41846259)

    opencv中图像的x,y 坐标以及 height, width,rows,cols 他们的关系经常混淆。

    rows 其实就是行,一行一行也就是y 啦。height高度也就是y啦。

    cols  也就是列,一列一列也就是x啦。width宽度也就是x啦。

  • 2.补充(以下均为原创):

  1. opencv python中的rows cols分别为img.shape[0](height)和img.shape[1](width)
  2. opencv c++中的图像对象访问像素可使用.at :cv::mat的成员函数: .at(int y, int x),可以用来存取图像中对应坐标为(x,y)的元素坐标。但是在使用它时要注意,在编译期必须要已知图像的数据类型.但在opencv-python中访问像素可直接使用例如img[x][y] 的方法进行实现

  原因:和opencv不同,目前opencv-python中的数组均为numpy array形式。

  • 3.函数上的应用的不同处

  在opencv-python中,有很多函数的应用方法都与opencv中不同,下面简单的分析一下最不同的地方

   1)python中使用cv2.方法名或变量名来调用方法/变量

   2)对于具有同样作用的函数的不同调用方法,例如

//c++
cvtColor(srcImg, binaryImg, COLOR_BGR2GRAY);
#python
binaryImg = cv2.cvtColor(srcImg,cv2.COLOR_BGR2GRAY)

    当然对于每个具体的函数的具体用法,可以自行上网搜索

   3)python中对于变量的类型是不需要声明的,所以将c++中代码修改为python时需要注意很多(缩进虽然很便于查看,但是还是感觉写{}的感觉很爽233)

   4)python中函数参数可以为array形式,所以c++ opencv中的很多类型都是不存在的,切记使用cv2.类型名()去使用,例如

//c++
circle(srcImg, Point(x, y), 3, Scalar(255, 0, 255), 2, 8, 0);
#python
cv2.circle(srcImg, (x, y), 3, (255, 100, 255), 1, 8, 0)

   其他的小坑估计还很多,多Google吧。

opencv-python与c++ opencv中的一些区别和基础的知识的更多相关文章

  1. Linux下安装OpenCV+Python支持

    以下说明在Linux下Python和OpenCV结合安装的过程,Python要使用OpenCV模块,则必须导入OpenCV提供的包,所以要提供Python支持,首先在安装OpenCV前安装必要的组件, ...

  2. OpenCV Python教程(3、直方图的计算与显示)

    转载请详细注明原作者及出处,谢谢! 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途什么的就直接略过去了. ...

  3. OpenCV + Python 人脸检测

    必备知识 Haar-like opencv api 读取图片 灰度转换 画图 显示图像 获取人脸识别训练数据 探测人脸 处理人脸探测的结果 实例 图片素材 人脸检测代码 人脸检测结果 总结 下午的时候 ...

  4. OpenCV + python 实现人脸检测(基于照片和视频进行检测)

    OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...

  5. 手把手教你如何用 OpenCV + Python 实现人脸识别

    下午的时候,配好了OpenCV的Python环境,OpenCV的Python环境搭建.于是迫不及待的想体验一下opencv的人脸识别,如下文. 必备知识 Haar-like 通俗的来讲,就是作为人脸特 ...

  6. opencv图像识别技术在自动化测试中的应用

    在自动化测试中,基于xpath.js选择器.css选择器进行元素定位及判定的技术已经比较成熟.在实际应用中,无论是web端还是移动端,仍有很多时候需要根据页面内容.页面中的图像进行定位及判定,这里介绍 ...

  7. opencv+python视频实时质心显示

    利用opencv+python实现以下功能: 1)获取实时视频,分解帧频: 2)将视频做二值化处理: 3) 将视频做滤波处理(去除噪点,获取准确轮廓个数): 4)识别图像轮廓: 5)计算质心: 6)描 ...

  8. Erlang/Elixir: 使用 OpenCV, Python 搭建图片缩略图服务器

    这篇文章是在OSX上测试和运行的的, Ubuntu下的安装和配置请移步到这里 应用程序进程树, 默认 Poolboy 中初始化10个用于处理图片的 Python 工作进程(Worker) 首先安装Op ...

  9. opencv python实用操作

    画多边形 fillConvexPloy与fillConvexPloy的区别 fillConvexPloy 用来画单个凸多边形: 如果点集的连线不是凹多边形,则会找一个最小的凸多边形把该凹多边形包住画出 ...

随机推荐

  1. Git 忽略提交 .gitignore

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交. Git 忽略文件提交的方法 有三种方法可以实现忽略Gi ...

  2. PHP 正则表达式匹配函数 preg_match 与 preg_match_all

    preg_match() preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 . 语法: 1 int preg_match( string pattern, strin ...

  3. dedecms的include文件夹是干什么的?

    include是DEDECMS的系统文件夹,里面放的是DEDECMS系统下的一些系统功能函数文件和功能定义与说明以及参数的文件. include目录文件作用解析 arc.archives.class ...

  4. xss防御

    http://blog.csdn.net/ghsau/article/details/17027893

  5. C#如何释放已经加载的图片

    使用Image.FromFile取磁盘上的图片时,这个方法会锁定图片文件,而且会导致内存占用增大, 有几种方法解决:一:将Image类转换成Bitmap类System.Drawing.Image im ...

  6. programing

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  7. linux下建ftp用户,并限制用户访问路径[转]

    目的是:在linux系统上建立ftp用户,并限制其通过ftp访问时,只能访问用户主目录:其主目录显示路径也是“/”,看不到上级目录.     例如,我要建立用户usertest,密码为usertest ...

  8. Storm保证消息处理

    Guaranteeing Message Processing Storm保证每一个tuple被完全处理.Strom中一个核心的机制是它提供了一种跟踪tuple血统的能力,它使用了一种十分有效的方式跟 ...

  9. MySQL5.6安装(RPM)笔记

    1. 检查MySQL是否安装,如果有安装,则移除(rpm –e 名称)[root@localhost ~]# rpm -qa | grep -i mysqlmysql-libs-xxxxxxxxxx. ...

  10. js中的监听事件总结

    javascript事件与功能说明大全:http://tools.jb51.net/table/javascript_event 1.滚动条监听事件 例1:监听滚动条距离页面顶端距离 <scri ...