In this script :-
camera_port = 0
ramp_frames = 400
camera = cv2.VideoCapture(camera_port)
def get_image():
global camera
retval, im = camera.read()
return im
def Camera():
global camera
for i in xrange(ramp_frames):
temp = get_image()
print("Taking image...")
camera_capture = get_image()
file = "opencv.png"
cv2.imwrite(file, camera_capture)
del(camera)
def Sendmail():
loop_value = 1
while loop_value==1:
try:
urllib2.urlopen("https://google.com")
except urllib2.URLError, e:
print "Network currently down."
sleep(20)
else:
print "Up and running."
loop_value = 0
def Email():
loop_value = 2
while loop_value==2:
try:
Camera()
Sendmail()
yag = yagmail.SMTP('email', 'pass')
yag.send('[email protected]', subject = "This is opencv.png", contents = 'opencv.png')
print "done"
except smtplib.SMTPAuthenticationError:
print 'Retrying in 30 seconds'
sleep(30)
else:
print 'Sent!'
sleep(20)
loop_value = 2
I get this error :-
What am I doing wrong. I have even defined camera globally, that to TWICE. Can somone please point out my mistake in the code? I use python 2.7 with Opencv module
File "C:\Python27\Scripts\Servers.py", line 22, in Camera
temp = get_image()
File "C:\Python27\Scripts\Servers.py", line 16, in get_image
retval, im = camera.read()
NameError: global name 'camera' is not defined
UPDATE Look above for updated code
You need to have defined camera
outside the scope of your methods as well. What the global
keyword does is tell Python that you will modify that variable which you defined externally. If you haven't, you get this
error.
EDIT
I didn't notice that you had already declared camera
externally. However, you delete the variable inside the Camera()
method, which has pretty much the same effect when you try to modify the variable again.
EDIT 2
Now that I can see what your code really does and what you intend to do, I don't think you should be working with a global camera
at all, but pass it as parameter instead. This should work:
camera_port = 0
ramp_frames = 400
def get_image(camera):
retval, im = camera.read()
return im
def Camera(camera):
for i in xrange(ramp_frames):
temp = get_image(camera)
print("Taking image...")
camera_capture = get_image(camera)
file = "opencv.png"
cv2.imwrite(file, camera_capture)
def Sendmail():
loop_value = 1
while loop_value==1:
try:
urllib2.urlopen("https://google.com")
except urllib2.URLError, e:
print "Network currently down."
sleep(20)
else:
print "Up and running."
loop_value = 0
def Email():
loop_value = 2
while loop_value==2:
try:
camera = cv2.VideoCapture(camera_port)
Camera(camera)
Sendmail()
yag = yagmail.SMTP('email', 'pass')
yag.send('[email protected]', subject = "This is opencv.png", contents = 'opencv.png')
print "done"
except smtplib.SMTPAuthenticationError:
print 'Retrying in 30 seconds'
sleep(30)
else:
print 'Sent!'
sleep(20)
loop_value = 2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With