python ओपनसीवी के साथ पायथन में छवि को घुमाएं




arrays opencv (2)

आपने लगभग यह किया आपको इस तथ्य से धोखा दिया गया था कि abs(imagem-255) गलत परिणाम देगा क्योंकि आपका dtype एक हस्ताक्षरित पूर्णांक है। पूर्णांक को हस्ताक्षरित रखने के लिए आपको (255-imagem) करना होगा:

def inverte(imagem, name):
    imagem = (255-imagem)
    cv2.imwrite(name, imagem)

जैसा कि यहां कुछ टिप्पणियों द्वारा अनुशंसित किया गया है, आप ओपनसीवी के bitwise_not फ़ंक्शन का उपयोग करके छवि को उलटा कर सकते हैं:

imagem = cv2.bitwise_not(imagem)

मैं एक रंगीन छवि लोड करना चाहता हूं, इसे ग्रेस्केल में परिवर्तित करना चाहता हूं, और फिर फ़ाइल में डेटा को उलटा करना चाहता हूं।

मुझे क्या चाहिए: ओपनसीवी में सरणी पर फिर से शुरू करने और इस सूत्र के साथ हर एक मूल्य को बदलने के लिए (यह गलत हो सकता है लेकिन यह मेरे लिए उचित लगता है):

img[x,y] = abs(img[x,y] - 255)

लेकिन मुझे समझ में नहीं आता कि यह क्यों काम करता है:

def inverte(imagem, name):
    imagem = abs(imagem - 255)
    cv2.imwrite(name, imagem)


def inverte2(imagem, name):
    for x in np.nditer(imagem, op_flags=['readwrite']):
        x = abs(x - 255)
    cv2.imwrite(name, imagem)


if __name__ == '__main__':
    nome = str(sys.argv[1])
    image = cv2.imread(nome)
    gs_imagem = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    inverte(gs_imagem, "invertida.png")
    inverte2(gs_imagem, "invertida2.png")

मैं एक स्पष्ट लूप नहीं करना चाहता (मैं अधिक पायथनिक होने की कोशिश कर रहा हूं)। मैं देख सकता हूं कि एक छवि में जिसने एक सफेद पृष्ठभूमि प्राप्त की है, वह काला हो गया है, लेकिन केवल यह ऐसा नहीं लगता है कि अन्य रंगों में अधिक (यदि कोई हो) परिवर्तन हो रहा है।


वैकल्पिक रूप से, आप bitwise_not के bitwise_not फ़ंक्शन का उपयोग करके छवि को उलटा कर सकते हैं:

imagem = cv2.bitwise_not(imagem)

मुझे इस उदाहरण को पसंद आया: https://www.learnopencv.com/filling-holes-in-an-image-using-opencv-python-c/





image-processing