की प्रदर्शन तुलना कुछ दिन पहले, मैंने नए ओपनसीवी-पायथन इंटरफ़ेस, cv2
का उपयोग शुरू किया।ओपनसीवी-पायथन इंटरफेस, सीवी और सीवी 2
मेरा प्रश्न cv
और cv2
इंटरफ़ेस की तुलना के संबंध में है।
उपयोग की आसानी के संबंध में, नया cv2
इंटरफ़ेस बहुत अधिक सुधार हुआ है, और यह cv2
के साथ काम करने में वास्तव में आसान और मजेदार है।
लेकिन गति के बारे में क्या?
प्रदर्शनों की जांच के लिए मैंने दो छोटे कोड स्निपलेट्स, cv
और cv2
में एक और बनाया।
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
== ================================================== =
और परिणाम यह है:
समय लिया = 14,4029130936
======================================= ===============
सीवी इंटरफ़ेस:
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)
================= =====================================
परिणाम है:
012,समय लिया = 1,16368889809
======================================== ===============
देखें, पुराना cv
cv2
से 12 times faster
है। और परिणामस्वरूप छवियां समान हैं। (इनपुट छवि आकार 720x540 है)
ऐसा क्यों होता है?
सीवी 2 धीमी सीवी की तुलना में धीमी है?
या क्या मैं यहां कोई गलती कर रहा हूं? उपर्युक्त कोड के लिए सीवी 2 में कोई तेज विधि है?
उत्तर के लिए धन्यवाद। क्या आप कुछ और विवरण जोड़ सकते हैं? क्या आप उपरोक्त प्रक्रिया के लिए एक बेहतर तरीका जानते हैं, किसी भी तेजी से numpy कार्यों आदि? –
@arkiaz, मैंने आपके सीवी 2 को लूप संस्करण के लिए संशोधित किया है, और अब यह सीवी संस्करण के समान गति है। और मैंने और अधिक तेज़ करने के लिए एक numpy संस्करण जोड़ा। – HYRY
धन्यवाद, आपकी पहली विधि सीवी के साथ तुलनीय गति प्रदान करती है, हालांकि कोड थोड़ा बड़ा हो जाता है। परिणाम मेरी छवि 'टी = 1.127' के साथ प्राप्त किया। लेकिन आपकी दूसरी विधि 'टी = 0.054' का बहुत अच्छा परिणाम देती है, लेकिन एक बड़ी ब्लैक स्क्रीन (यानी गलत आउटपुट) देती है। क्यों यह है? –