- In the MATLAB command window check whether the path to your folder containing the file exists. It should be not. To do so, execute
Not able to call python script from matlab using py command
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I downloaded the Add - on How to call Python Library function in Matlab.
I also downloaded python version 3.6. When I am using the command pyversion, it is showing correctly that version of python is 3.6.
But when I am trying to call the python code in matlab , it is giving an error - Undefined variable "py" or class "py.call_new1.view_img".
Here is my python code stored in file call_new1.py which is working fine in python editor . What my code does is that it is taking random shapes from the folder E:/baibhav/MPEG7dataset/Distinct_images. Afterwards it is filling a random colour inside that shape from colour_list.After that it is also superimposing a random alphabet from string.ascii_letters on the above obtained image.
import os,random
import string
from PIL import Image,ImageDraw, ImageFont
def random_string_generator(str_size, allowed_chars):
return ''.join(random.choice(allowed_chars) for x in range(str_size))
def view_img(str):
print(str)
for i in range(1, 10):
folder1=r"E:/baibhav/MPEG7dataset/Distinct_images"
a=random.choice(os.listdir(folder1))
print(a)
file1 = folder1+'\\'+a
img1 = Image.open(file1).convert("RGBA")
#img1.show()
width, height = img1.size
center = (int(0.5 * width), int(0.5 * height))
#yellow = (100, 100, 0, 255)
colour_list = ((255,0,0,255),(0,255,0,255),(0,0,255,255),(210,105,30,255),(255, 255, 0, 255),(0,255,255,255),(128,128,128,255),(255,0,255,255),(100, 100, 0, 255),(100,0,255,255),(0,100,100,255))
#col = random.choice(colour_list)
ImageDraw.floodfill(img1, xy=center, value=random.choice(colour_list))
#img3.load()
#img2 = img1;
#img1.show()
chars = string.ascii_letters
size = 1
print(chars)
print('Random alphabet is', random_string_generator(size, chars))
# initialise the drawing context with
# the image object as background
draw = ImageDraw.Draw(img1)
font = ImageFont.truetype('Roboto-Bold.ttf', size=100)
(x, y) = (150, 150)
name = random_string_generator(size, chars)
color = 'rgb(255, 255, 255)' # white color
draw.text((x, y), name, fill=color, font=font)
# save the edited image
#img1.show()
img1.save("H:/superimpose/filename"+str(i)+".png", 'PNG')
Here is how I am calling the same code in matlab command window :-
py.call_new1.view_img('hello')
But it is giving me following error:
Undefined variable "py" or class "py.call_new1.view_img".
Please help me with this.Thanks in Advance.
0 Commenti
Risposte (2)
Jalaj Gambhir
il 19 Lug 2019
Modificato: Jalaj Gambhir
il 19 Lug 2019
Hi,
This is a common error that occurs when python is not able to locate your script. You can add the path of your file to the python searchable directories as:
P = py.sys.path
2. For your case, execute the following, to add the path of your folder in python searchable directories:
if count(P,'E:/baibhav/MPEG7dataset/Distinct_images') == 0
insert(P,int32(0), 'E:/baibhav/MPEG7dataset/Distinct_images');
end
3. Execute
py.sys.path
to check the output again. If the path is added to the list, execute the following for the desired result.
py.call_new1.view_img
0 Commenti
Vedere anche
Categorie
Scopri di più su Call Python from MATLAB in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!