एक पारदर्शी पृष्ठभूमि के साथ .png
छवि को देखते हुए, मैं गैर-पारदर्शी डेटा के बाध्यकारी बॉक्स को ढूंढना चाहता हूं। QImage.pixel()
के साथ नेस्टेड for
लूप का उपयोग दर्दनाक रूप से धीमा है। क्या क्यूटी में ऐसा करने का एक अंतर्निहित तरीका है?क्या क्यूटी के पास छवि के बाध्यकारी बॉक्स को खोजने का कोई तरीका है?
उत्तर
तो पिक्सेल() आप के लिए बहुत धीमी है, और अधिक करने पर विचार कुशल पंक्ति-वार डेटा को संबोधित, एक QImage पी दिया:
int l =p.width(), r = 0, t = p.height(), b = 0;
for (int y = 0; y < p.height(); ++y) {
QRgb *row = (QRgb*)p.scanLine(y);
bool rowFilled = false;
for (int x = 0; x < p.width(); ++x) {
if (qAlpha(row[x])) {
rowFilled = true;
r = std::max(r, x);
if (l > x) {
l = x;
x = r; // shortcut to only search for new right bound from here
}
}
}
if (rowFilled) {
t = std::min(t, y);
b = y;
}
}
मुझे शक है कि यह किसी भी इस से भी तेज हो जाएगा।
एक विकल्प है जिसमें QGraphicsPixmapItem
का उपयोग करना और अपारदर्शी क्षेत्र (QGraphicsPixmapItem::opaqueArea().boundingRect()
) के बाध्यकारी बॉक्स के लिए पूछताछ करना शामिल है। सुनिश्चित नहीं है कि यह सबसे अच्छा तरीका है लेकिन यह काम करता है :) यह देखने के लिए क्यूटी के स्रोत कोड में खुदाई हो सकती है कि यह देखने के लिए कि कौन सा कोड है।
निम्नलिखित कोड चौड़ाई और छवि चौड़ाई और छवि के अपारदर्शी भागों की ऊंचाई के बाद की ऊंचाई प्रिंट आउट देगा:
QPixmap p("image.png");
QGraphicsPixmapItem *item = new QGraphicsPixmapItem(p);
std::cout << item->boundingRect().width() << "," << item->boundingRect().height() << std::endl;
std::cout << item->opaqueArea().boundingRect().width() << "," << item->opaqueArea().boundingRect().height() << std::endl;
opaqueArea() क्षेत्र का वर्णन करने वाला एक संपूर्ण पथ बनाता है। यह सरल बाध्य आयताकार गणना से धीमा होना चाहिए। – ypnos
उम्मीद है कि ओपी कुछ समय के परिणाम पोस्ट कर सकता है। मुझे यह देखने में दिलचस्पी होगी कि दोनों विकल्प कितने समय लेते हैं। लेकिन हाँ, जटिल छवियों के लिए मैं केवल कल्पना कर सकता हूं कि यह धीमा हो रहा है। –
मैंने माइक्रो-बेंचमार्क बनाने के बिना अपने ओवर-ऑल कार्य के कुछ कठिन समय किए। इस दृष्टिकोण ने अनिवार्य रूप से वॉल-घड़ी के समय के रूप में मेरे घोंसले के लिए इस्तेमाल किया, लेकिन कम सीपीयू समय लिया। – retracile
- 1. क्या कोई DOM तत्व के बाध्यकारी बॉक्स (पिक्सेल में) प्राप्त करने का कोई तरीका है?
- 2. क्या आधी रात को खोजने का कोई बेहतर तरीका है?
- 3. क्या क्यूटी के पास सी इंटरफ़ेस है?
- 4. जावा: क्या किसी के पास सरणी में स्ट्रिंग का सर्वोत्तम मिलान खोजने का तरीका है?
- 5. क्या रननेबल को पैरामीटर पास करने का कोई तरीका है?
- 6. क्या आईओएस ऐप स्टोर ऑनलाइन खोजने का कोई तरीका है?
- 7. क्या प्रोग्राम बॉक्स को टेक्स्ट बॉक्स को संपादित करने का कोई तरीका है?
- 8. क्या वेबसाइट में अप्रयुक्त सीएसएस खोजने का कोई तरीका है?
- 9. क्या केवल ध्रुवीय निर्देशांक का उपयोग करके पास के बिंदु खोजने के लिए कोई एल्गोरिदम है?
- 10. क्या आपके डेटाबेस टेबल के आकार/आकार को खोजने का कोई तरीका है?
- 11. डेटाग्रिड व्यू को बाध्यकारी - क्या सेल के पृष्ठभूमि रंग को "बांधने" का कोई तरीका है?
- 12. क्या नियंत्रण के मालिक धागे को खोजने का कोई तरीका है?
- 13. क्या अलर्ट बॉक्स की उत्पत्ति पाने का कोई तरीका है?
- 14. क्या एनएच प्राइम के अनुमानित मूल्य को खोजने का कोई तरीका है?
- 15. क्या पते के लिए निकटतम क्रॉस सड़कों को खोजने का कोई तरीका है?
- 16. क्या जावा में टेम्पलेट (जेनेरिक) पैरामीटर के प्रकार को खोजने का कोई तरीका है?
- 17. क्या सी ++ में एनम के कार्डिनलिटी (आकार) को खोजने का कोई तरीका है?
- 18. क्या लैम्ब्डा अभिव्यक्ति को चर या तर्क के रूप में पास करने का कोई तरीका है?
- 19. डब्ल्यूपीएफ मुझे बाध्यकारी के रास्ते पर बाध्यकारी नहीं होने देगा - क्या कोई और तरीका है?
- 20. क्या कोई एपीआई है जो मुझे छवि द्वारा खोजने देगी?
- 21. क्या फ़ंक्शन में पारित चर के नाम को खोजने के लिए जावा में कोई तरीका है?
- 22. क्या jquery के साथ एक छवि के "प्राकृतिकविड्थ" को पढ़ने का कोई तरीका है?
- 23. क्या jQuery के प्रत्येक का उपयोग करने से जावास्क्रिप्ट ऐरे खोजने का कोई बेहतर तरीका है?
- 24. क्या 100 के अंकों का योग खोजने का कोई तरीका है ??
- 25. क्या JDialog के मालिक को बदलने का कोई तरीका है?
- 26. क्या एंड्रॉइड के पास एडीबी में प्रक्रिया प्राथमिकता प्रदर्शित करने का कोई तरीका है?
- 27. जावा: क्या आपके पास निजी तरीकों के कार्यान्वयन को लागू करने का कोई तरीका है?
- 28. क्यूटी समकक्ष .NET डेटा बाध्यकारी?
- 29. क्या बॉक्स (div) के बाहर सीएसएस सीमाएं रखने का कोई तरीका है? या वैकल्पिक समाधान
- 30. क्या संदर्भ के पते को ढूंढने का कोई तरीका है?
+1: अच्छा। मैं बस scanLine() विकल्प को देखने के बारे में था। –
ऐसा नहीं है कि क्यूटी दस्तावेज़ इसे अच्छी तरह से विज्ञापन कर रहे हैं। इसके बारे में पता लगाने के लिए मुझे आधा साल लगा। – ypnos
मैंने माइक्रो-बेंचमार्क बनाने के बिना अपने पूरे कार्य के कुछ कठिन समय किए। यह दृष्टिकोण अर्नोल्ड के समाधान के रूप में अनिवार्य रूप से सीपीयू-टाइम की समान मात्रा में उपयोग किया जाता था, लेकिन दीवार घड़ी का समय कम हो गया था। – retracile