OpenCV的Python接口
Python教程系列:http://blog.csdn.net/sunny2038/article/details/9057415
與C++的不同之處:http://developer.51cto.com/art/201003/187863_all.htm
python接口功能的類似功能的介紹其中包括迭代訪問、切片方式、如果你對python接口功能想有所了解的話,你可以瀏覽以下文章,會對你有所幫助。
AD:2013云計算架構師峰會課程資料下載
在正常情況下, OpenCV的python接口和C語言接口基本一致. 但是, 對于python接口實現比較困難的地方, 一些函數和結構體可能會有不同. 下面的描述就是有關此內容的詳細介紹。希望會對你有所幫助。
函數接口也盡量保持和C語言一致. 最大的差異是在函數通過參數來返回值的時候. 由于python中有些基本的參數都不可改變的, 因此代替的方法是一次返回多個值. 同樣, 大部分的結構和C語言中也有相似的功能, 但是語法可能有些不同.
- Python socket服務如何進行配置詳解
- Python日志需要我們不斷的學習
- 了解Python多線程的創建程序
- 探秘Python對象體系
- 用Python標準庫修改搜索引擎獲取結果
下面描述比較重要的差異, 具體的細節可以參考python接口的代碼.
沒有IplImage
最大的差異是python接口中沒有IplImage! 這主要是為了避免SWIG 在處理IplImage中隱含共享的不足. 以下是具體的替代方法:
原來返回IplImage的函數, 現在返回CvMat 原來讀IplImage改為讀CvMat ,CvMat中沒有的IplImage屬性被添加以支持IplImage, 例如height, width, depth, imageDataSize等. ROI和COI相關函數被禁止使用. 不過用戶可以用cvGetSubRect/cvSplit/cvMerge來實現類似的功能.
迭代訪問
CvMat擴展了python中的2個基本方法__iter__ 和 __getitem__, 來支持元素的簡單訪問.
通過行的方式迭代
<python>x = cvCreateMat(m, n, type) for row in x: # row is same as that returned by cvGetRowpython>通過列的方式迭代
<python>for col in x.colrange(): # col is same as that returned by cvGetColpython>切片方式
?獲取一行
<python>row = x[i]python>獲取一列
<python>col = x[:, i]python>獲取一個區域 ?
獲取一個元素
同樣的方法可以用來修改元素
CvMatND
暫時還不支持. 如果您有興趣自己實現的話, 請聯系RomanStanchak.
CvSeq
python中訪問CvSeq的代碼:
交互命令行編程
python的最大優點是可以在交互命令行中開發程序. 交互shell編程和Matlab類似. 以下在命令行中顯示一副圖像的代碼:
需要注意的是cvStartWindowThread函數, 它目前只支持linux系統. cvStartWindowThread 函數的目的是代替cvWaitKey()來實現窗口的自動刷新. 去掉cvWaitKey()函數之后, 程序的輸入將不受cvWaitKey阻塞, 更便于shell交互.
Matlab語法
熟悉Matlab或SciPy的朋友, 可以更關注matlab_syntax模塊. 該模塊采用了和 Matlab/SciPy 類似的方法來創建數組. 很多情況下, 這比用OpenCV的標準函數更加便捷. 切換行號顯示:
總結
以上是生活随笔為你收集整理的OpenCV的Python接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三步搞定路由器配置-三步搞定路由器配置教
- 下一篇: 口蜜腹剑的主人公是谁(口蜜腹剑的说法是怎