導航:首頁 > 編程語言 > pythoncvector

pythoncvector

發布時間:2022-05-30 01:50:31

python 調用 C++的DLL,函數參數是數組怎麼處理

給你一個例子看看,你就知道怎麼做了

C++的介面

typedef struct
{
unsigned long DeviceType;
int Handle;
int NumberOfClients;
int SerialNumber;
int MaxAllowedClients;
}NeoDevice;
int _stdcall icsneoFindNeoDevices(unsigned long DeviceTypes, NeoDevice *pNeoDevices, int *pNumberOfDevices);


Python調用的代碼:

class NeoDevice(Structure):
_fields_ = [("DeviceType",c_ulong),
("Handle",c_int),
("NumberOfClients",c_int),
("SerialNumber",c_int),
("MaxAllowedClients",c_int)]
class cNeoVICan(CCanBase):
def __init__(self):
neoVi = windll.icsneo40
self.icsneoFindNeoDevices = neoVi.icsneoFindNeoDevices
if __name__ == "__main__":
canBus = cNeoVICan()
print canBus.icsneoGetDLLVersion()
iNumberOfDevices = (NeoDevice * 10)()
num = c_int()
iResult = canBus.icsneoFindNeoDevices(c_ulong(65535), cast(iNumberOfDevices, POINT(NeoDevice)), byref(num))

㈡ python轉化成c++或c

是特定的應用,別人無法看出來做什麼的。雖然裡面每個標准python用法都很簡單。
python比c++容易的多,不管是編寫還是閱讀,轉成c++毫無意義,除非為了效率的緣故。

感覺就是讀文件,計算一些東西,然後收集結果再輸出到其他文件中。

㈢ Python 中的 classmethod 和 staticmethod 有什麼具體用途

今天剛看了流暢的python,裡面有一章就講到這兩個的具體用例。

frommathimporthypot,atan2
fromarrayimportarray

classVector(object):
__slots__=('_x','_y')
typecode='d'

def__init__(self,x=0,y=0):
self._x=float(x)
self._y=float(y)

@property
defx(self):
returnself._x

@property
defy(self):
returnself._y

@classmethod
deffrombytes(cls,octets):
typecode=chr(octests[0])
memv=momoryview(octets[1:]).cast(typecode)
returncls(*memv)

def__hash__(self):
returnhash(self.x)^hash(self.y)

def__iter__(self):
return(iforiin(self.x,self.y))

def__repr__(self):
class_name=type(self).__name__
returnf'{class_name}({self.x},{self.y})'

def__str__(self):
returnstr(tuple(self))

defangle(self):
returnatan2(self.y,self.x)

def__format__(self,fmt_spec=''):
iffmt_spec.endswith('p'):
fmt_spec=fmt_spec[:-1]
coords=(abs(self),self.angel())
outer_fmt='<{}{}'
else:
coords=self
outer_fmt='({}{})'
components=(format(c,fmt_spec)forcinself)
returnouter_fmt.format(*components)

def__bytes__(self):
return(bytes([ord(self.typecode)])+
bytes(array(self.typecode,self)))

def__eq__(self,other):
returntuple(self)==tuple(self)

def__abs__(self):
'''abs(Vector(3,4))-->sqrt(vector.x,vector.y)=5'''
returnhypot(self.x,self.y)

def__bool__(self):
returnabs(self)!=0

def__add__(self,other):
x=self.x+other.x
y=self.y+other.y
returnVector(x,y)

def__mul__(self,scalar):
returnVector(self.x*scalar,self.y*scalar)

㈣ 如何用python安裝woord2vector

安裝
gensim有一些依賴,首先請先確保你安裝了這些東西:
Python >= 2.6. Tested with versions 2.6, 2.7, 3.3, 3.4 and 3.5. Support for Python 2.5 was discontinued starting gensim 0.10.0; if you must use Python 2.5, install gensim 0.9.1.

NumPy >= 1.3. Tested with version 1.9.0, 1.7.1, 1.7.0, 1.6.2, 1.6.1rc2, 1.5.0rc1, 1.4.0, 1.3.0, 1.3.0rc2.

SciPy >= 0.7. Tested with version 0.14.0, 0.12.0, 0.11.0, 0.10.1, 0.9.0, 0.8.0, 0.8.0b1, 0.7.1, 0.7.0.

還有一點特別注意的是,保證你的系統有C的編譯器,不然速度會很慢,其實你可以首先編譯一下Google官方的C語言版的試試,然後在安裝gensim,gensim的word2vector用了官方的代碼
根據官網的安裝指南,有兩種方法可以選擇:
使用easy_install 或者pip,注意這兩者可能都需要sudo申請更高的許可權
easy_install -U gensim
或者(這個相對於官網的,我修改過,實測我的沒問題)
pip install --upgrade --ignore-installed six gensim

我使用了第二種方式進行的安裝,如果這些依賴沒有安裝的,可以安裝python和相關的工具後,直接使用pip或easy_install安裝。
在進行模型訓練的時候,如果不安裝Cython,無法進行多線程訓練,速度很瘦影響,所以接著安裝下Cython
pip install cython

㈤ Python中的cStringIO問題

Python3 沒有cStringIO, 改為io

tim@ubtim:~$ python
Python 2.7.3 (default, Sep 26 2013, 20:08:41)
[GCC 4.6.3] on linux2
Type "help", "right", "credits" or "license" for more information.
>>> import cStringIO
>>> exit()

tim@ubtim:~$ python3
Python 3.2.3 (default, Sep 25 2013, 18:25:56)
[GCC 4.6.3] on linux2
Type "help", "right", "credits" or "license" for more information.
>>> import cStringIO
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
ImportError: No mole named cStringIO
>>> import io
>>> ios = io.StringIO()
>>>

㈥ python里計算每個數字出現的頻數

python 3.3 腳本,看看是否能給你點啟示
a = [1,2,5,1,2,3,5,6,6,5,4,6,4,2,0,8,9,7,4,1,1,2,2,2,2,2,2,2,2,3,3,3,2,5,2,5,8,5,5]
count = len(a)
myset = set(a)
for item in myset:
print(item,100*a.count(item)/count)

㈦ 為什麼要學python,感覺能做的C都能,腳本語言的優勢就在於更簡單嗎

代碼簡潔,編程效率高,雖然運行效率差c很多,但是寫一個c能寫3個python文本了,適用於快速開發需求,還有強大的第三方庫,支持很多平台。

㈧ 怎麼看python中邏輯回歸輸出的解釋

以下為python代碼,由於訓練數據比較少,這邊使用了批處理梯度下降法,沒有使用增量梯度下降法。

##author:lijiayan##data:2016/10/27
##name:logReg.pyfrom numpy import *import matplotlib.pyplot as pltdef loadData(filename):
data = loadtxt(filename)
m,n = data.shape print 'the number of examples:',m print 'the number of features:',n-1 x = data[:,0:n-1]
y = data[:,n-1:n] return x,y#the sigmoid functiondef sigmoid(z): return 1.0 / (1 + exp(-z))#the cost functiondef costfunction(y,h):
y = array(y)
h = array(h)
J = sum(y*log(h))+sum((1-y)*log(1-h)) return J# the batch gradient descent algrithmdef gradescent(x,y):
m,n = shape(x) #m: number of training example; n: number of features x = c_[ones(m),x] #add x0 x = mat(x) # to matrix y = mat(y)
a = 0.0000025 # learning rate maxcycle = 4000 theta = zeros((n+1,1)) #initial theta J = [] for i in range(maxcycle):
h = sigmoid(x*theta)
theta = theta + a * (x.T)*(y-h)
cost = costfunction(y,h)
J.append(cost)

plt.plot(J)
plt.show() return theta,cost#the stochastic gradient descent (m should be large,if you want the result is good)def stocGraddescent(x,y):
m,n = shape(x) #m: number of training example; n: number of features x = c_[ones(m),x] #add x0 x = mat(x) # to matrix y = mat(y)
a = 0.01 # learning rate theta = ones((n+1,1)) #initial theta J = [] for i in range(m):
h = sigmoid(x[i]*theta)
theta = theta + a * x[i].transpose()*(y[i]-h)
cost = costfunction(y,h)
J.append(cost)
plt.plot(J)
plt.show() return theta,cost#plot the decision boundarydef plotbestfit(x,y,theta):
plt.plot(x[:,0:1][where(y==1)],x[:,1:2][where(y==1)],'ro')
plt.plot(x[:,0:1][where(y!=1)],x[:,1:2][where(y!=1)],'bx')
x1= arange(-4,4,0.1)
x2 =(-float(theta[0])-float(theta[1])*x1) /float(theta[2])

plt.plot(x1,x2)
plt.xlabel('x1')
plt.ylabel(('x2'))
plt.show()def classifyVector(inX,theta):
prob = sigmoid((inX*theta).sum(1)) return where(prob >= 0.5, 1, 0)def accuracy(x, y, theta):
m = shape(y)[0]
x = c_[ones(m),x]
y_p = classifyVector(x,theta)
accuracy = sum(y_p==y)/float(m) return accuracy

調用上面代碼:

from logReg import *
x,y = loadData("horseColicTraining.txt")
theta,cost = gradescent(x,y)print 'J:',cost

ac_train = accuracy(x, y, theta)print 'accuracy of the training examples:', ac_train

x_test,y_test = loadData('horseColicTest.txt')
ac_test = accuracy(x_test, y_test, theta)print 'accuracy of the test examples:', ac_test

學習速率=0.0000025,迭代次數=4000時的結果:

似然函數走勢(J = sum(y*log(h))+sum((1-y)*log(1-h))),似然函數是求最大值,一般是要穩定了才算最好。

從上面這個例子,我們可以看到對特徵進行歸一化操作的重要性。

㈨ 如何用Python實現支持向量機

看這個文章
blog.csdn.net/zouxy09/article/details/17292011
機器學習演算法與Python實踐之(四)支持向量機(SVM)實現

㈩ python opencv 表示mat類型嗎

、Mat類型:矩陣類型Matrix
openCVMat維密集數據數組用處理向量矩陣、圖像、直圖等等見維數據
Mat3重要:
1、Mat mat = imread(const String* filename); 讀取圖像
2、imshow(const string frameName, InputArray mat); 顯示圖像
3、imwrite (const string& filename, InputArray img); 儲存圖像
Mat類型較CvMat與IplImage類型說更強矩陣運算能力支持見矩陣運算計算密集型應用CvMat與IplImage類型轉化Mat類型減少計算間花費
A.Mat -> IplImage
同創建圖像沒復制數據
例: // 假設Mat類型imgMat圖像數據存
IplImage pImg= IplImage(imgMat);
B.Mat -> CvMat
與IplImage轉換類似復制數據創建矩陣
例: // 假設Mat類型imgMat圖像數據存
CvMat cvMat = imgMat;

二、CvMat類型與IplImage類型:圖像類型
openCVMat類型與CvMatIplImage類型都代表顯示圖像Mat類型側重於計算數性較高openCVMat類型計算進行優化CvMatIplImage類型更側重於圖像openCV其圖像操作(縮放、單通道提取、圖像閾值操作等)進行優化
補充:IplImage由CvMat派CvMat由CvArr派即CvArr -> CvMat -> IplImage
CvArr用作函數參數論傳入CvMat或IplImage內部都按CvMat處理
1.CvMat
A.CvMat-> IplImage
IplImage* img = cvCreateImage(cvGetSize(mat),8,1);
cvGetImage(matI,img);
cvSaveImage("rice1.bmp",img);
B.CvMat->Mat
與IplImage轉換類似選擇否復制數據
Mat::Mat(const CvMat* m, bool Data=false);
openCV沒向量(vector)數據結構任何候我要表示向量用矩陣數據表示即
CvMat類型與我線性代數課程向量概念相比更抽象比CvMat元素數據類型並僅限於基礎數據類型比面創建二維數據矩陣:
CvMat* cvCreatMat(int rows ,int cols , int type);
type任意預定義數據類型比RGB或者別通道數據我便CvMat矩陣表示豐富彩圖像

2.IplImage
類型關系我說IplImage類型繼承自CvMat類型包括其變數解析圖像數據
IplImage類型較CvMat參數比depthnChannels普通矩陣類型通深度通道數同表示用32位表示RGB+Alpha.圖像處理我往往深度與通道數處理做OpenCV圖像表示種優化案
IplImage圖像另種優化變數origin----原點計算機視覺處理重要便原點定義清楚圖像源編碼格式甚至操作系統都原選取產影響彌補點openCV允許用戶定義自原點設置取值0表示原點位於圖片左角1表示左角
dataOrder參數定義數據格式IPL_DATA_ORDER_PIXELIPL_DATA_ORDER_PLANE兩種取值前者便於像素同通道數據交叉排列者表示所通道按順序平行排列
IplImage類型所額外變數都圖像表示與計算能力優化
A.IplImage -> Mat
IplImage* pImg = cvLoadImage("lena.jpg");
Mat img(pImg,0); // 0復制影像pImg與imgdata共用同記憶體位置header各自
B.IplImage -> CvMat
1:CvMat mathdr, *mat = cvGetMat( img, &mathdr );
2:CvMat *mat = cvCreateMat( img->height, img->width, CV_64FC3 );
cvConvert( img, mat );
C.IplImage*-> BYTE*
BYTE* data= img->imageData;

CvMatIplImage創建區別:
1、建立矩陣第參數行數第二參數列數
CvMat* cvCreateMat( int rows, int cols, int type );
2、建立圖像CvSize第參數寬度即列數;第二參數高度即行數 CvMat矩陣相反
IplImage* cvCreateImage(CvSize size, int depth, int channels );
CvSize cvSize( int width, int height );

IplImage內部buffer每行按4位元組齊CvMat沒限制

補充:
A.BYTE*-> IplImage*
img= cvCreateImageHeader(cvSize(width,height),depth,channels);
cvSetData(img,data,step);
//首先由cvCreateImageHeader()創建IplImage圖像制定圖像尺寸深度通道數;
//由cvSetData()根據BYTE*圖像數據指針設置IplImage圖像數據數據
//其step指定該IplImage圖像每行佔位元組數於1通道IPL_DEPTH_8U圖像step等於width

閱讀全文

與pythoncvector相關的資料

熱點內容
82一56的筒便演算法 瀏覽:404
數控機床fanuc編程 瀏覽:607
天刀mode不是內部或外部命令 瀏覽:854
長城c30壓縮機價格 瀏覽:1000
java打開圖片文件 瀏覽:409
跟程序員聊天聊到半夜 瀏覽:411
自己怎麼做app代碼 瀏覽:915
win7旗艦版進不去帶命令符 瀏覽:799
單片機溫度檢測電路 瀏覽:802
拼圖軟體不壓縮 瀏覽:656
紅袖添香小說源碼 瀏覽:624
erp加密工具在哪裡買 瀏覽:516
怎麼給qq群里的文件加密 瀏覽:762
androidsetbitmap 瀏覽:597
mt4反向編譯 瀏覽:201
sun伺服器命令 瀏覽:827
程序員同乘電梯 瀏覽:617
49乘以235的簡便演算法 瀏覽:673
新概念51單片機c語言教程光碟 瀏覽:262
伺服器分區如何選擇 瀏覽:354