Python: How to get image from USB Webcam? - python

I am very new in programming with python :)
My Setup:
Windows 11 Pro
Python 3.7
OpenCV 4.7
Webcam: HD Pro Webcam C920 from logitech
I want to access the camera image in Python. Everything works with my integrated camera.
When I want to access the USB camera, nothing works. I do not get video from my USB webcam.
I try the following code to see, if there is a camera.
import cv2
cap = cv2.VideoCapture(0)
print(cap.isOpened())
It works with my integrated Webcam. I get a True
With cap = cv2.VideoCapture(2) i get False
But if i try this with cap = cv2.VideoCapture(1) i get nothing back and there is no error. The program just keeps running. My conclusion: Somehow the USB camera has to work. Otherwise I would also expect a False for cap = VideoCapture(1).
I have already found and tried many things on the Internet. Unfortunately, nothing has helped.
I have also tried pygame, but that does not seem to run under windows.
How do I get video from my USB camera?
Thanks for your help :)

Related

Change to USB camera [duplicate]

I copied code from https://stackoverflow.com/a/34588758/210342 and used with default (built-in) camera, it worked. Then I attached USB camera, tested it with VLC and changed the code to open camera 1:
cam = cv2.VideoCapture(1)
I check whether the camera is open cam.isOpened() -- it is -- but the camera is not enabled (its hardware indicator, LED, is off) and indeed all I see on the screen is black frame.
Is there some extra special code to add in order to enable USB camera?
You can also refer this link here
https://devtalk.nvidia.com/default/topic/1027250/how-to-use-usb-webcam-in-jetson-tx2-with-python-and-opencv-/
Here he changes the line below to
cap = cv2.VideoCapture("/dev/video1") # check this
Before plugging in the camera, go to your terminal home
Type cd /dev
Type ls video and then press tab, if you find only result as video0, that means only webcam is present.
Now repeat 1 to 2 with USB webcam plugged in. You should find video1 or video2 when you repeat the steps.
I ran into the same problem, turns out sometimes the webcam can take both slots 0 and 1.
So cam = cv2.VideoCapture(2) worked for me. This was found using the cd /dev-method above.
Are you sure the usb camera is camera 1, i've done this before and had to use cv2.VideoCapture(0)
I do not know why but on my laptop (Acer Aspire 3) the usb webcam works with python opencv only if I plug it in the right side usb of my laptop and NOT if I plug it in the left side usb. So try plugging the webcam on all the usb ports you have. (I also had to use cam = cv2.VideoCapture(2) as #Slayahh suggested.
in accordance to the accepted answer and this https://stackoverflow.com/a/60603969/4451944
i realized cv2.VideoCapture(4) the parameter 4 is directly proportional to the file suffix of /dev/video4

I can not open the webcam using VideoCapture of cv2

I'm working on project about vehicles detection and counting, and i'm trying to use trained HAAR cascade provided by opencv using anaconda3, but cv2.VideoCapture(0).isOpened() return False, means that it couldnt open the frames correctly,what should i do ? thank you.
I've already tried to change the parameter 0 to -1 as recommended on the net but it didn't work :/
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
cap.isOpened()
#This one returns False !
Maybe it's the problem with the driver.
You could test if your camera works well in other applications.
It occured to me once on my Ubuntu16.
For Linux, you could use cheese or command line:
ls /dev/video*
to see if your camera is mounted.
For Windows, just open you camera application. But I think the camera driver could barely fail on Windows

opencv python camera permission issue on Windows 10

While running a simple opencv video capture script, i am getting False as the result. I suspect it is due to some security setting in Windows 10 which is not allowing camera access. I checked Privacy > Camera settings, but there was no option to allow a script to access the camera. I can see that the camera is not turned on when running the following opencv based test script.
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
print(ret)
The Key to the answer is "Give time for Microsoft Windows to initalize WebCAM"
import time
capWebcam = cv2.VideoCapture(0)
time.sleep(1.000) # Make sure, you need to give time
# for MS Windows to initialize Camera
It's called "Allow access to classic application" or "Desktop applications" something like this in the bottom of the setting page, under Windows Store type applications.
This gain camera access to all EXE and DLL standalone applications.
One setting for all of them.
More info on exceptions here https://support.microsoft.com/en-us/help/4468234/windows-10-desktop-apps-and-privacy
Works for me in
'cv2.__version__ 4.2.0'
just installed latest opencv and python8 on latest windows10.
As suggested in previous helpful answers, after checking windows camera security setting, adding time delay, and running windows camera app, the program works fine.

Open CV cannot read frames from USB camera on Raspberry Pi

I have a Logitech c270 usb webcam connected to my Raspberry Pi 3, running on a Jessie image. I have tried to capture frames with this simple tutorial code on
http://www.pyimagesearch.com/2016/02/22/writing-to-video-with-opencv/
Whenever I try to read frames in the while loop, it gives out this error:
NoneType object has no attribute 'shape'
I have printed out the vs.read() function and it also returns None object.
What can I do to resolve this problem?
NOTE: When I executed cmake to build the binaries for Open CV 3.1 on Raspberry Pi, I havent specified OpenCV to use V4L. Could this be a problem?
Thanks in advance.
It's Because your video stream object does not get attached with the camera. Hence no image is displayed.
If you are using Pi Camera, then make sure to type --picamera 1 as an argument while running the script.
else your camera is not connected to your Pi correctly.

How to stop SimpleCV camera stream?

I'm trying to learn SimpleCV using Python 2.7 in IDLE.
Once the camera form SimpleCV is initialized the camera become unavailable to other programs like native webcam application or skype etc.
from SimpleCV import *
camera = Camera()
After restarting the pc or logoff and logon the webcam becomes to those applications. It seems that even closing out from python IDLE, it doesn't close the camera stream. Is there any way to stop the camera stream of simplecv?
I couldn't replicate your issue, but if the webcam is still running even after your program terminates/you close IDLE, you can end the camera by going into task manager and killing all running Python processes.
After some experimenting, I found that if you want to accomplish the same thing directly inside the code, you could try simply deleting the reference altogether:
>>> import SimpleCV as scv
>>> cam = scv.Camera()
>>> del cam
Calling del cam caused the webcam indicator light on my laptop to turn off. Granted, this appears to be an undocumented (??) solution, so I'm not sure how robust it is. I would probably try testing this on several different laptops/webcams first, to make sure it works reliably and consistently.

Categories