मैं लोड की गई छवि की चमक बढ़ाने का प्रयास कर रहा हूं img
, हालांकि पिक्सल के माध्यम से साइकिल चलाने के लिए मैं एक छोटे मैट्रिक्स का उपयोग कर रहा हूं [जिसे मैं बाद में गॉसियन ब्लर लागू करने के लिए उपयोग करूंगा]। यहाँ मेरा कार्य है:
void Dobright(cv::Mat &in,IplImage * img)
{
uchar* temp_ptr ;
for( int row = 0; row < in.rows; row++)
{
for ( int col = 0; col < in.cols; col++)
{
CvPoint pt = {row,col};
temp_ptr = &((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3];
temp_ptr[0] += 100;
temp_ptr[1] += 100;
temp_ptr[2] += 100;
}
}
}
हालाँकि अगर मूल छवि थी:
मुझे चमकदार छवि मिलती है:
जैसा कि आप देख सकते हैं कि कुछ भाग दूसरों की तुलना में उज्जवल हैं और चूंकि पंक्तियाँ और स्तंभ समान नहीं हैं इसलिए पूरी छवि के पिक्सेल तक नहीं पहुँचा जा सकता है, इस समस्या को कैसे हल किया जाए?
2 जवाब
इसके लुक से आपकी चौड़ाई और ऊंचाई मिश्रित है, इसका उपयोग करके देखें:
CvPoint pt = {col,row};
आपके वर्तमान एल्गोरिदम के साथ भी आप समस्याओं में भाग लेंगे जब आपके पिक्सेल मूल मान> 155, (156 + 100 = 1) गोलाकार होने के कारण हैं। प्रयोग करने का प्रयास करें
tmp_ptr[0] = (tmp_ptr > 155) ? 255 : tmp_ptr[0] + 100;
ऐसा लगता है कि आपने अपना x और y यहां फ़्लिप कर दिया है। आप चाहते हैं कि CvPoint {col,row}
न हो {row,col}
।
इसके बारे में इस तरह से सोचें: तीसरी पंक्ति, पाँचवाँ स्तंभ बिंदु (5,3) है, न कि बिंदु (3,5)।
संबंधित सवाल
नए सवाल
c++
C ++ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा है। यह मूल रूप से C के विस्तार के रूप में डिज़ाइन किया गया था और इसमें एक समान सिंटैक्स है, लेकिन यह अब पूरी तरह से अलग भाषा है। C ++ कंपाइलर के साथ संकलित कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें। विशिष्ट मानक संशोधन [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] या [C ++ 23], आदि से संबंधित प्रश्नों के लिए संस्करण-विशिष्ट टैग का उपयोग करें। ।