日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
python接口與C語言功能不同之處

在正常情況下, OpenCV的python接口和C語言接口基本一致. 但是, 對于python接口實現(xiàn)比較困難的地方, 一些函數(shù)和結(jié)構(gòu)體可能會有不同. 下面的描述就是有關(guān)此內(nèi)容的詳細(xì)介紹。希望會對你有所幫助。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比樂山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式樂山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋樂山地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

函數(shù)接口也盡量保持和C語言一致. 最大的差異是在函數(shù)通過參數(shù)來返回值的時候. 由于python中有些基本的參數(shù)都不可改變的, 因此代替的方法是一次返回多個值. 同樣, 大部分的結(jié)構(gòu)和C語言中也有相似的功能, 但是語法可能有些不同. #t#

下面描述比較重要的差異, 具體的細(xì)節(jié)可以參考python接口的代碼.

沒有IplImage

最大的差異是python接口中沒有IplImage! 這主要是為了避免SWIG 在處理IplImage中隱含共享的不足. 以下是具體的替代方法:

原來返回IplImage的函數(shù), 現(xiàn)在返回CvMat 原來讀IplImage改為讀CvMat ,CvMat中沒有的IplImage屬性被添加以支持IplImage, 例如height, width, depth, imageDataSize等. ROI和COI相關(guān)函數(shù)被禁止使用. 不過用戶可以用cvGetSubRect/cvSplit/cvMerge來實現(xiàn)類似的功能.

迭代訪問

CvMat擴展了python中的2個基本方法__iter__ 和 __getitem__, 來支持元素的簡單訪問.

通過行的方式迭代

 
 
  1. x = cvCreateMat(m, n, type) for row in x:   
  2.  
  3.  # row is same as that returned by cvGetRow python> 
  4.  

通過列的方式迭代

 
 
  1. for col in x.colrange():   
  2.  # col is same as that returned by cvGetCol python> 

切片方式

獲取一行

 
 
  1. row = x[i] python>   
  2.  

獲取一列

 
 
  1. col = x[:, i] python>  

獲取一個區(qū)域

 
 
  1. slice = x[0:10, 0:10] python>   
  2.  

獲取一個元素

 
 
  1. elem = x[i, j]   
  2.  
  3. or   
  4. elem = x[i][j]   
  5.  
  6. or if x is a vector   
  7. elem = x[i] python>   
  8.  

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

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

#p#

CvMatND

暫時還不支持. 如果您有興趣自己實現(xiàn)的話, 請聯(lián)系RomanStanchak.

CvSeq
python中訪問CvSeq的代碼:

 
 
  1. num_contours, contours = cv.cvFindContours(...)   
  2.  
  3. hrange iterates through h_next element   
  4. for contour in contours.hrange():   
  5.  
  6.    # contour is a CvSeq of points  
  7.    for pt in contour:  
  8.        print pt  
  9.    # alternately  
  10.    for pt in contour.vrange():  
  11.        print pt  
  12.    # alternately  
  13.    for i in range(contour.total):  
  14.        print contour[i] python> 
  15.  

交互命令行編程

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

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

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

Matlab語法

熟悉Matlab或SciPy的朋友, 可以更關(guān)注matlab_syntax模塊. 該模塊采用了和 Matlab/SciPy 類似的方法來創(chuàng)建數(shù)組. 很多情況下, 這比用OpenCV的標(biāo)準(zhǔn)函數(shù)更加便捷. 切換行號顯示

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

分享名稱:python接口與C語言功能不同之處
新聞來源:http://m.5511xx.com/article/dppigjh.html