2017-06-29 3 views

Antwort

1

Sie können Linien auf dem Eingangsbild zeichnen die cv2.line() Funktion. Also je nachdem, wo Sie wollen, um die Linien zu zeichnen, Ihre grundlegenden Code wird wie folgt aussehen:

img = cv2.imread(r"path\to\img") 
cv2.line(img, (start_x, start_y), (end_x, end_y), (255, 0, 0), 1, 1) 

Um die Abmessungen des Bildes zu erhalten, können Sie img.shape verwenden, welche (height, width) zurückkehren wird.

Um eine vertikale Linie durch die Mitte zum Beispiel zu ziehen, würde Ihr Code wie folgt aussehen:

cv2.line(img, (img.shape[1]/2, 0), (img.shape[1]/2, img.shape[0]), (255, 0, 0), 1, 1) 
0

Hier ist die Lösung für meine Frage Jungs ist. Nutze es.

import matplotlib.pyplot as plt 
import matplotlib.ticker as plticker 
try: 
    from PIL import Image 
except ImportError: 
    import Image 

# Open image file 
image = Image.open('bird.jpg') 
my_dpi=200. 

# Set up figure 
fig=plt.figure(figsize=(float(image.size[0])/my_dpi,float(image.size[1])/my_dpi),dpi=my_dpi) 
ax=fig.add_subplot(111) 

# Remove whitespace from around the image 
fig.subplots_adjust(left=0,right=1,bottom=0,top=1) 

# Set the gridding interval: here we use the major tick interval 
myInterval=300. 
loc = plticker.MultipleLocator(base=myInterval) 
ax.xaxis.set_major_locator(loc) 
ax.yaxis.set_major_locator(loc) 

# Add the grid 
ax.grid(which='major', axis='both', linestyle='-', color='g') 

# Add the image 
ax.imshow(image) 

# Find number of gridsquares in x and y direction 
nx=abs(int(float(ax.get_xlim()[1]-ax.get_xlim()[0])/float(myInterval))) 
ny=abs(int(float(ax.get_ylim()[1]-ax.get_ylim()[0])/float(myInterval))) 




# Save the figure 
fig.savefig('birdgrid_without_Label.jpg') 

Output for the above Code

Verwandte Themen