के लिए ओपनसीवी पायथन बाइंडिंग्स मैं पाइथन बाइंडिंग के माध्यम से हड़पने वाली कट विधि के ओपनसीवी कार्यान्वयन का उपयोग करने की कोशिश कर रहा हूं। मैंने सीवी और सीवी 2 दोनों में संस्करण का उपयोग करने का प्रयास किया है, लेकिन मुझे सही तरीके से चलाने के लिए विधि को प्राप्त करने के लिए उपयोग करने के लिए सही पैरामीटर खोजने में समस्या हो रही है। मैंने पैरामीटर के कई क्रमिक प्रयासों की कोशिश की है और कुछ भी काम नहीं करता है (मूल रूप से मैंने जीथूब पर देखा हर उदाहरण)। यहां कुछ उदाहरण मैं पालन करने के लिए कोशिश की है कर रहे हैं:ग्रैबकूट एल्गोरिदम
और यहाँ विधि के प्रलेखन और एक ज्ञात बग रिपोर्ट है:
मैं कोड निष्पादित करने के लिए कोड प्राप्त कर सकता हूं नीचे उदाहरण दर्ज करें, लेकिन यह एक खाली (सभी काला) छवि मुखौटा देता है।
img = Image("pills.png")
mask = img.getEmpty(1)
bgModel = cv.CreateMat(1, 13*5, cv.CV_64FC1)
fgModel = cv.CreateMat(1, 13*5, cv.CV_64FC1)
for i in range(0, 13*5):
cv.SetReal2D(fgModel, 0, i, 0)
cv.SetReal2D(bgModel, 0, i, 0)
rect = (150,70,170,220)
tmp1 = np.zeros((1, 13 * 5))
tmp2 = np.zeros((1, 13 * 5))
cv.GrabCut(img.getBitmap(),mask,rect,tmp1,tmp2,5,cv.GC_INIT_WITH_RECT)
मैं छवियों को लोड करने के लिए SimpleCV का उपयोग कर रहा हूं। मुखौटा प्रकार और img.getBitmap (से वापसी प्रकार) कर रहे हैं:
iplimage(nChannels=1 width=730 height=530 widthStep=732)
iplimage(nChannels=3 width=730 height=530 widthStep=2192)
कोई इस कोड मैं इसे देखना पसंद करेंगे की एक काम उदाहरण है। इसके लायक होने के लिए मैं ओएसएक्स हिम तेंदुए पर चल रहा हूं, और ओपनसीवी का मेरा संस्करण एसवीएन रिपोजिटरी से स्थापित किया गया था (कुछ हफ्ते पहले)। संदर्भ के लिए मेरी इनपुट छवि यह है:
मैंने परिणाम मुखौटा enum मानों को और अधिक दृश्यमान में बदलने का प्रयास किया है। यह वापसी मूल्य नहीं है जो समस्या है। यह एक पूरी तरह से काला छवि देता है। मैं कुछ और मूल्यों की कोशिश करूंगा।
img = Image("pills.png")
mask = img.getEmpty(1)
bgModel = cv.CreateMat(1, 13*5, cv.CV_64FC1)
fgModel = cv.CreateMat(1, 13*5, cv.CV_64FC1)
for i in range(0, 13*5):
cv.SetReal2D(fgModel, 0, i, 0)
cv.SetReal2D(bgModel, 0, i, 0)
rect = (150,70,170,220)
tmp1 = np.zeros((1, 13 * 5))
tmp2 = np.zeros((1, 13 * 5))
cv.GrabCut(img.getBitmap(), mask, rect, tmp1, tmp2, 5, cv.GC_INIT_WITH_MASK)
mask[mask == cv.GC_BGD] = 0
mask[mask == cv.GC_PR_BGD] = 0
mask[mask == cv.GC_FGD] = 255
mask[mask == cv.GC_PR_FGD] = 255
result = Image(mask)
result.show()
result.save("result.png")
मुख्य धागे को उदाहरण दिया गया। – kscottz