2017-11-11 1 views
0

ImageExtract Pixelkoordinaten und Einfügen neue Bild Python

Dieser Code ist zurückkehr Pixel-Koordinaten, dierote Farbe hat jetzt Ich will diesen Pixel auf neues Bild extrahieren und einzufügen. Wie kann ich Pixelkoordinaten einfügen? Bitte fragen Sie, wenn die Frage nicht klar ist.

import cv2 
import numpy as np 
filename = "oOHc6.png" 
img = cv2.imread(filename, 1) 
hsv=cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 
hsv_lower=np.uint8([0, 200, 210]) 
hsv_upper=np.uint8([180, 250, 250]) 
mask= cv2.inRange(hsv, hsv_lower, hsv_upper) 

#display mask 
res = cv2.bitwise_and(img,img,mask = mask) 
res_gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY) 
ys,xs = np.where(res_gray>0) 
pts = [(x,y) for x,y in zip(xs,ys)] 

empty = np.zeros_like(img) 
mask_c = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR) 
imaskc = mask_c>0 

empty[imaskc] = img[imaskc] 
#empty.save('C:/Python27/cclabel/images/NewImage'+'.png','png') 
cv2.imwrite("new.png", empty) 
+0

bearbeiten Sie den Code, buchen Sie den Teil, der unbedingt notwendig ist, um Ihr Problem zu replizieren. Entfernen Sie den gesamten kommentierten Code, die Datei-E/A und andere Codezeilen, die für diesen Beitrag nicht benötigt werden. – zindarod

+0

Was meinst du mit „Dieser Code Pixel Koordinaten zurückgibt, die' rote color' haben jetzt will ich extrahieren und diese Pixel auf neues Bild einfügen.“ Ich denke nicht, dass dieser Code dafür geschrieben ist ... Sie wollen die roten Farbbereiche, aber Sie machen Harris Corner Detection? Ich denke, Sie sollten 'inRange' Farbauswahl im HSV-Raum verwenden. – Silencer

Antwort

0

I cv2.inRange() in HSV-Raum tun, um die Maske für den roten Bereich zu erhalten:

enter image description here

Dann nutzen Sie die Maske-Betrieb (wie cv2.bitwise_and()/np.where()/Slices) zum "Einfügen" in ein anderes Bild.

enter image description here


die Koordinaten zu erhalten, können Sie auch die np.where() wie diese verwenden.

# 使用 cv2.bitwise_and 掩模操作,然后使用 np.where 获取坐标 
res = cv2.bitwise_and(img,img,mask = mask) 
res_gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY) 
ys,xs = np.where(res_gray>0) 
pts = [(x,y) for x,y in zip(xs,ys)] 

eine andere gleiche Größe das Bild zu "copy-paste" in:

## 复制-粘贴到其他空白的地方 
empty = np.zeros_like(img) 
mask_c = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR) 
imaskc = mask_c>0 
empty[imaskc] = img[imaskc] 
+0

Ich habe den Code nach np. wo bearbeitet, wenn ich corrds Array leer ist können Sie den Code überprüfen. –

+0

@MunazzaAli Ich habe meine Antwort auch bearbeitet. – Silencer

+0

Eigentlich lassen Sie mich wissen, was willst du wirklich tun? Um die Koordinaten zu erhalten und zu speichern? Oder in ein anderes Bild zu pushen? Oder irgendwas? – Silencer