A few days back, I started using new OpenCV-Python interface, cv2.
My question is regarding the comparison of cv and cv2 interface.
Regarding the ease of use, new cv2 interface has improved far greater, and it is really easy and fun to work with cv2.
But what about speed?
I made two small code snipplets, one in cv and another in cv2, to check the performances. Both does the same function, access pixels of an image, test it, make some modifications, etc.
Below is the code:
cv2 interface:
import time
import numpy as np
import cv2
gray = cv2.imread('sir.jpg',0)
width = gray.shape[0]
height = gray.shape[1]
h = np.empty([width,height,3])
t = time.time()
for i in xrange(width):
for j in xrange(height):
if gray[i,j]==127:
h[i,j]=[255,255,255]
elif gray[i,j]>127:
h[i,j]=[0,0,255-gray[i,j]]
else:
h[i,j]=[gray[i,j],0,0]
t2 = time.time()-t
print "time taken = ",t2
=====================================================
And result is:
time taken = 14.4029130936
======================================================
cv interface:
import cv,time
gray = cv.LoadImage('sir.jpg',0)
h = cv.CreateImage(cv.GetSize(gray),8,3)
t=time.time()
for i in xrange(gray.width):
for j in xrange(gray.height):
k = cv.Get2D(gray,j,i)[0]
if k==127:
cv.Set2D(h,j,i,(255,255,255))
elif k>127:
cv.Set2D(h,j,i,(0,0,255-k))
else:
cv.Set2D(h,j,i,(k,0,0))
t2 = time.time()-t
print "time taken = ",t2
cv.ShowImage('img',h)
cv.WaitKey(0)
======================================================
The result is:
time taken = 1.16368889809
========================