日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

OpenCV的Python接口

發布時間:2023/12/31 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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>

獲取一個區域 ?

<python>slice = x[0:10, 0:10]python>

獲取一個元素

<python>elem = x[i, j] or elem = x[i][j] or if x is a vector elem = x[i]python>

同樣的方法可以用來修改元素

<python># x and y are CvMat's x[0:10, 0:5] = y[10:20, 1:6] x[i, j]= 1; x[:, :] = 1; x[:, :] = cvScalar(1); x[0:10, i]= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]python>

CvMatND

暫時還不支持. 如果您有興趣自己實現的話, 請聯系RomanStanchak.

CvSeq
python中訪問CvSeq的代碼:

<python>num_contours, contours = cv.cvFindContours(...) hrange iterates through h_next element for contour in contours.hrange(): # contour is a CvSeq of points for pt in contour: print pt # alternately for pt in contour.vrange(): print pt # alternately for i in range(contour.total): print contour[i]python>

交互命令行編程

python的最大優點是可以在交互命令行中開發程序. 交互shell編程和Matlab類似. 以下在命令行中顯示一副圖像的代碼:

<python> from opencv.cv import * from opencv.highgui import *cvStartWindowThread() cvNamedWindow("win") im= cvLoadImage("pics/airplane.jpg") cvShowImage("win", im)python>

需要注意的是cvStartWindowThread函數, 它目前只支持linux系統. cvStartWindowThread 函數的目的是代替cvWaitKey()來實現窗口的自動刷新. 去掉cvWaitKey()函數之后, 程序的輸入將不受cvWaitKey阻塞, 更便于shell交互.

Matlab語法

熟悉Matlab或SciPy的朋友, 可以更關注matlab_syntax模塊. 該模塊采用了和 Matlab/SciPy 類似的方法來創建數組. 很多情況下, 這比用OpenCV的標準函數更加便捷. 切換行號顯示:

<python>from opencv.cv import * from opencv.highgui import * from opencv.matlab_syntax import * cvStartWindowThread() im = imread("pics/airplane.jpg") imshow(im) python>

總結

以上是生活随笔為你收集整理的OpenCV的Python接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。