में कनवर्ट करें मेरे पास एक QImage है और मुझे इसे ग्रेस्केल में परिवर्तित करने की आवश्यकता है, फिर बाद में रंगों के साथ उस पर पेंट करें। मुझे यह देखने के लिए allGray()
और isGrayScale()
फ़ंक्शन मिला है कि कोई छवि पहले से ही ग्रेस्केल है, लेकिन toGrayScale()
या समान नामित फ़ंक्शन नहीं है।एक QImage को ग्रेस्केल
अभी मैं इस कोड का उपयोग कर रहा है, लेकिन है यह एक बहुत अच्छा प्रदर्शन नहीं है:
for (int ii = 0; ii < image.width(); ii++) {
for (int jj = 0; jj < image.height(); jj++) {
int gray = qGray(image.pixel(ii, jj));
image.setPixel(ii, jj, QColor(gray, gray, gray).rgb());
}
}
क्या होगा सबसे अच्छा तरीका है, प्रदर्शन के लिहाज से, एक QImage स्केल के लिए कन्वर्ट करने के लिए?
हालांकि यह अभी भी नहीं सबसे अच्छा तरीका हो जाएगा, छोरों के लिए अपने स्विचिंग (ताकि आप ii पुनरावृति की कोशिश पहला, जेजे दूसरा)। मेमोरी लेआउट के आधार पर, इससे बेहतर कैश कोहिरेंसी हो सकती है और कोड को तेज़ बना दिया जा सकता है। – Daerst
@ डेरस्ट हाँ, अच्छा सुझाव, लेकिन अगर मुझे कोई बेहतर समाधान मिल जाए तो कोई कामकाज अनुकूलन नहीं करेगा। यदि कोई अन्य समाधान मौजूद नहीं है, तो शायद। – sashoalm