OpenCV program works in MacOS terminal but not IDLE - python

This is my first time using OpenCV and I'm having some difficulties. I just made a simple program to see if it was imported correctly:
import cv2
import numpy as np
print("hi")
cap = cv2.VideoCapture(0)
print(cap.isOpened())
print("hi")
while True:
ret, frame = cap.read()
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
When I run this file on the MacOS terminal, it works fine and opens up the video window, but when I run this file with IDLE nothing happens. No errors or warnings, the first "hi" prints but nothing else and the program ends. It's like as soon as I try to use cv2 directly after the first "hi", the program just ends. I believe I'm using the same version of python in both my terminal and IDLE, and I've tried uninstalling and reinstalling OpenCV using pip. Did I not install OpenCV correctly to be using with IDLE? Any help is greatly appreciated!
Edit: Not sure if this is causing any problems, but when I first ran it from IDLE, it had a few "Python quit unexpectedly" windows before I tried it in terminal. When I tried it there, it asked for access to my computer's webcam. Since then, the "Python quit unexpectedly" windows haven't showed up when I tried IDLE, so maybe it just needs access to my camera? I don't see an option for that in my Mac settings though, there's no IDLE app option to give access to.

Can you try this.
Snippet:
# -*- coding: utf-8 -*-
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
print(cap.isOpened())
while(cap.isOpened()):
ret, frame = cap.read()
cv2.imshow('frame', frame)
if (cv2.waitKey(1) & 0xFF == ord('q')):
break
cap.release()
cv2.destroyAllWindows()
Or:
snippet:
import cv2
cv2.namedWindow("preview")
vc = cv2.VideoCapture(0)
rval, frame = vc.read()
while True:
if frame is not None:
cv2.imshow("preview", frame)
rval, frame = vc.read()
if cv2.waitKey(1) & 0xFF == ord('q'):
break

Related

OpenCV USB-camera does not work on Raspberry Pi 4 32-bit

When I am trying to start videocapuring with opencv and python, it simply does not load. Does not show any problems, does not return anything. NOTHING!!!
The code is the simpliest one:
import cv2
import sys
video_capture = cv2.VideoCapture(0)
while True:
ret, frame = video_capture.read()
cv2.imshow('Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video_capture.release()
cv2.destroyAllWindows()
This is the result of running this program
if I run code line by line, this is where it gets stuck
If I press Ctrl+C during execution of last line this is what it tells me:
Trying to dispose element pipeline0, but it is in PAUSED instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.
Maybe not really a solution, but a 0-effort thing to try is specify the video backend like this:
video_capture = cv2.VideoCapture(0, CAP_V4L2)

OpenCV show err.message at camera lunch

I would like to lunch a usb-camera at my raspberry pi, but when I try to start python code (opencv), it shows this message and stop a lunch
ASSERT: "false" in file qasciikey.cpp, line 501
Aborted
Can someone please explain me, what error is this?
It doesnt work even with another codes as well... But camera works fine, when I open it in programs like Camorama webcam viewer. I read that this part makes a problem
cv2.waitKey(20)
So it makes in another code (when i uncomment it, it lunch the code but dont show camera output) But in this code, even if I uncomment it, the code themself doesn't work: show upper error message
Here is the code
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',frame)
cv2.imshow('gray',gray)
if cv2.waitKey(20) & 0xFF == ord('q'): # HERE
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
oh are you Japanese yes bro computers are little racist do not press any japanese letter while your code runing. for waitKey you can use esc or number keys:
if cv2.waitKey(20) & 0xFF == ord('0'):
break

Corrupt JPEG Data: 1273 extraneous bytes before marker. Opencv 3/python2.7

This is the code when i execute it:
You can see the frame opens but doesnt show anything
I want to use a usb camera with a raspberry pi 3 model b v1.2 using opencv 3.3 and python 2.7.
I work with opencv in an virtual enviroment.
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read() #Capture frame-by-frame
#Our operations on the frame come here
#gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
#Display resulting frame
cv2.imshow('frame',frame)
cv2.waitKey(10)
#if cv2.waitKey(1) & 0xFF == ord('q'):
# break
#when everything done, release the capture
cap.release()
cv2.destroyAllWindows()
I just have no idea how to get around this error. I already searched the error and i am getting helpless, anyone having an idea?
EDIT: i am currently playing around with the code and i can get frames but most of the time the screen stays grey. I use # to show how the code looks now
Ok, it now opens a window and shows the output of the camera
Because of this code:
import sys
sys.path.append('/home/pi/.virtualenvs/cv/lib/python2.7/site-
packages/usr/local/lib/python2.7/site-packages')
and i also use sudo python program.py in the terminal
But this Error :"NameError: name 'CV_CAP_PROP_FRAME_HEIGHT' is not defined" still persists...

cv2.VideoCapture error

There are already many questions exist regarding cv2.VideoCapture but it doesn't help me.
I am using OpenCV 2.4.10 and python 2.7.9 , I am trying to capture video from built-in webcam (Toshiba ,Windows 7) . I am using this code
import numpy as np
import cv2
cap = cv2.VideoCapture(1)
print cap.isOpened()
print cap.get(3)
print cap.get(4)
while(True):
ret,frame=cap.read()
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
And the problem is , When i first run this code it throws error : error: (-215) size.width>0 && size.height>0 in function cv::imshow
and just after waiting for hardly one minute , i again run this code and this time it's fine
And this is happening again and again , sometimes it's work good but sometimes fails and give error. Any solution to this ?
I copied the opencv_ffmpeg2410.dll file from C:\Applications\opencv\build\x86\vc10\bin into the python path C:\Python27(OpenCV 2.4 VideoCapture not working on Windows)
I tried cv2.VideoCapture(0) but in this case web-camera didn't even start (web-camera light did not blink)
Since you are not checking the value of the ret return value, it is possible that cap.read() is giving you a bad frame.
Replace with something like
while True:
ret, frame = cap.read()
if ret:
cv2.imshow('window', frame)
# ...

python.exe crashing when running basic OpenCV example

I'm just following the second example from this tutorial and using a different video. Can anyone help solve the problem of why it crashes? I thought it would be my cheap Windows 7 running on 2 GB RAM, but it's not even using up the RAM when it crashes.
import numpy as np
import cv2
cap = cv2.VideoCapture("F:\\OpenCV\\Cam1_Indoor.avi")
fgbg = cv2.createBackgroundSubtractorMOG2()
while(1):
ret, frame = cap.read()
fgmask = fgbg.apply(frame)
cv2.imshow('frame',fgmask)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
UPDATE 1:
I still can't get this working, but I have tried to debug it some more. I found that regardless of the video file name I give it (even if it's totally bogus), the same crash happens.
UPDATE 2:
I found that the code below works on images, so my problem may have to do with video capture.
im_in = cv2.imread("F:\\OpenCV\\nickel.jpg", cv2.IMREAD_GRAYSCALE);
fgbg = cv2.createBackgroundSubtractorMOG2()
fgmask = fgbg.apply(im_in)
cv2.imshow('frame',fgmask)
cv2.waitKey(0)
Add this below import statements
cv2.ocl.setUseOpenCL(False)

Categories

Resources