2012-10-31 13 views
7

मुझे लगता है कि मेरे फ्लूक रोबोट से एक छवि प्राप्त करने और मेरी छवि में प्रत्येक पिक्सेल का रंग निर्धारित करने का अनुमान है। फिर यदि पिक्सेल ज्यादातर लाल होता है, तो इसे पूरी तरह से हरे रंग में बदलें। यदि पिक्सेल अधिकतर हरा होता है, तो इसे पूरी तरह से नीले रंग में बदलें। यदि पिक्सेल ज्यादातर नीला है, तो इसे पूरी तरह से लाल रंग में बदलें। यही वह है जो मैं करने में सक्षम हूं, लेकिन मुझे छवि को बदलने के लिए इसे काम नहीं मिल सकता है। कोई वाक्यविन्यास त्रुटि नहीं है, यह केवल अर्थपूर्ण है जिसमें मुझे परेशानी हो रही है। मैं अजगर का उपयोग कर रहा हूँ।पिक्सेल रंग बदलना पायथन

मेरे प्रयास किया कोड:

pic1 = makePicture("pic1.jpg"): 
    for pixel in getpixel("pic1.jpg"): 
     if pixel Red: %s: 
      return Green:%s 
     if pixel Green:%s: 
      return Blue:%s 
+0

(http://whathaveyoutried.com) जहां आप मदद की ज़रूरत है? – thegrinner

+0

मैंने अपना उपरोक्त पोस्ट –

उत्तर

11

मैं तुम्हें Image मॉड्यूल का उपयोग करने के लिए कोशिश कर रहे हैं मान:

import getpixel 
getpixel.enable(im) 
r, g, b = im.getpixel(0,0) 
print 'Red: %s, Green:%s, Blue:%s' % (r,g,b) 

इसके अलावा, मैं चित्र निम्नलिखित की तरह बचाया है।

import Image 
picture = Image.open("/path/to/my/picture.jpg") 
r,g,b = picture.getpixel((0,0)) 
print("Red: {0}, Green: {1}, Blue: {2}".format(r,g,b)) 

इस image पर इस रनिंग मैं आउटपुट प्राप्त: यहाँ एक उदाहरण है

>>> import Image 
>>> picture = Image.open("/home/gizmo/Downloads/image_launch_a5.jpg") 
>>> r,g,b = picture.getpixel((0,0)) 
>>> print("Red: {0}, Green: {1}, Blue: {2}".format(r,g,b)) 
Red: 138, Green: 161, Blue: 175 

संपादित करें: क्या आप मुझे यह

import Image 
picture = Image.open("/path/to/my/picture.jpg") 

# Get the size of the image 
width, height = picture.size() 

# Process every pixel 
for x in width: 
    for y in height: 
     current_color = picture.getpixel((x,y)) 
     #################################################################### 
     # Do your logic here and create a new (R,G,B) tuple called new_color 
     #################################################################### 
     picture.putpixel((x,y), new_color) 
+0

संपादित किया है बहुत बहुत धन्यवाद! तो अगर मुझे पिक्सेल रंग को एक विशिष्ट रंग में बदलने की आवश्यकता है (मेरे प्रश्न में mentioed) मुझे अपने कोड का उपयोग करना होगा, लेकिन एक लूप में डाल देना होगा और फिर "अगर" एक रंग है तो मैं इसे उस रंग में वापस कर दूंगा जो मैं चाहता हूं ? –

+0

आपके विशिष्ट उपयोग को थोड़ा और स्पष्ट रूप से संभालने के लिए अपडेट किया गया। अलग-अलग रंगों को अलग करने के लिए आप 'आर, जी, बी = current_color' का उपयोग कर सकते हैं और फिर से परिवर्तित करने के लिए 'new_color = (R, G, B)' का उपयोग कर सकते हैं। – Gizmo

+0

आपको बहुत धन्यवाद Gizmo !!! –

3

आप की तरह कुछ कोशिश करेंगे चाहते हैं ऐसा करने के लिए गलतियां हैं:

# Get the size of the image 

width, height = picture.size() 

for x in range(0, width - 1): 

     for y in range(0, height - 1): 
  1. ब्रैकेट गलती हैं !! उन्हें छोड़ दो।
  2. int पुन: प्रयोज्य नहीं है।

मैं भी, आप लोड (उपयोग करने के लिए) की सलाह देते हैं यह बहुत तेजी से है, क्योंकि: Gizmo के जवाब पर कुछ टिप्पणी जोड़ने

pix = im.load() 

print pix[x, y] 

pix[x, y] = value 
0

। यह:

px = im.load() 
current_color = (px[i, j]) 

शायद इस की तुलना में तेजी है:

picture.getpixel((x,y)) 

इसके अलावा, इस का उपयोग सुनिश्चित करें:

picture.putdata(colors) 
बजाय पाश अंदर इस बात का

:

picture.putpixel((x,y), new_color) 
0

मैं अजगर 3.6.4 और तकिया 5.0.0 का उपयोग कर रहा हूँ। Gizmo का कोड स्निपेट मेरे लिए काम नहीं करता था। थोड़ा काम करने के बाद मैं एक निश्चित टुकड़ा बनाया: [? तुम क्या कोशिश की है]

import Image 
picture = Image.open("/path/to/my/picture.jpg") 

# Get the size of the image 
width, height = picture.size 

# Process every pixel 
for x in range(width): 
    for y in range(height): 
     current_color = picture.getpixel((x,y)) 
     #################################################################### 
     # Do your logic here and create a new (R,G,B) tuple called new_color 
     #################################################################### 
     picture.putpixel((x,y), new_color) 
0
import cv2 
import numpy as np 

m = cv2.imread("C:/../Sample Pictures/yourImage.jpg") 

h,w,bpp = np.shape(m) 

for py in range(0,h): 
    for px in range(0,w): 
#can change the below logic of rgb according to requirements. In this 
#white background is changed to #e8e8e8 corresponding to 232,232,232 
#intensity, red color of the image is retained. 
     if(m[py][px][0] >200):    
      m[py][px][0]=232 
      m[py][px][1]=232 
      m[py][px][2]=232 

cv2.imshow('matrix', m) 
cv2.waitKey(0) 
cv2.imwrite('yourNewImage.jpg',m) 
संबंधित मुद्दे