# include <opencv2/opencv.hpp> # include <opencv2/highgui.hpp> # include <opencv2/imgproc.hpp> # include <opencv2/videoio.hpp> # include <sstream> int main ( int argc , char * argv [ ] ) cv :: VideoCapture cap ; //声明相机捕获对象 //设置编码格式,//https://www.fourcc.org/codecs.php //更多属性设置参考:https://docs.opencv.org/4.5.0/d9/df8/tutorial_root.html cap . set ( cv :: CAP_PROP_FOURCC , cv :: VideoWriter :: fourcc ( 'M' , 'J' , 'P' , 'G' ) ) ; cap . set ( cv :: CAP_PROP_FRAME_WIDTH , 640 ) ; //图像的宽,需要相机支持此宽 cap . set ( cv :: CAP_PROP_FRAME_HEIGHT , 480 ) ; //图像的高,需要相机支持此高 //图像分辨率640×480 int deviceID = 0 ; //相机设备号 cap . open ( deviceID ) ; //打开相机 if ( ! cap . isOpened ( ) ) //判断相机是否打开 std :: cerr << "ERROR!!Unable to open camera\n" ; return - 1 ; cv :: Mat img ; while ( true ) cap >> img ; //以流形式捕获图像 cv :: namedWindow ( "example" , 1 ) ; //创建一个窗口用于显示图像,1代表窗口适应图像的分辨率进行拉伸。 if ( img . empty ( ) == false ) //图像不为空则显示图像 cv :: imshow ( "example" , img ) ; int key = cv :: waitKey ( 30 ) ; //等待30ms if ( key == int ( 'q' ) ) //按下q退出 break ; cap . release ( ) ; //释放相机捕获对象 cv :: destroyAllWindows ( ) ; //关闭所有窗口 return 0 ;

如果电脑上有外接的usb摄像机,可以更换设备号为1打开,在0与1之间切换会找到你想打开的相机,如果有更多相机,设备号依次增加。

Python代码:

#!/usr/bin/env python
# coding=utf8
import numpy as np
from cv2 import cv2
cap = cv2.VideoCapture(0) #设备号为0
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M','J','P','G'))
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
while(True):
    if cap.isOpened() == False:
        print('can not open camera')
        break
    ret, frame = cap.read() #读取图像
    if ret == False: #图像读取失败则直接进入下一次循环
        continue
	cv2.namedWindow("frame")
	cv2.imshow('frame', frame)
	mykey = cv2.waitKey(1)
	#按q退出循环,0xFF是为了排除一些功能键对q的ASCII码的影响
    if mykey & 0xFF == ord('q'):
        break
#释放资源
cap.release()
cv2.destroyAllWindows()
                    主要使用cv::VideoCapture类完成。C++代码:环境:Windows10 + vs2019#include &lt;iostream&gt;#include &lt;opencv2/opencv.hpp&gt;#include &lt;opencv2/highgui.hpp&gt;#include &lt;opencv2/imgproc.hpp&gt;#include &lt;opencv2/videoio.hpp&gt;#include&lt;sstream&gt;i
import cv2
cap=cv2.VideoCapture(0)#mac系统选择1   如果打开本地视频,就直接将0改为视频的地址就可以了
success=cap.isOpened()#返回的是bool类型,用于查看是否可以打开本地的视频
while success:
    ret,frames=cap.read()
    frame_rgb=cv2.cvtColor(frames,cv2.COLOR_BGR2RGB)#因为有些任务需.
				
之前一直不清楚opencv调用摄像头的具体方法,于是参考b站视频写了个通用模板,以后可以根据需要自行调整。视频链接 先定义图片和视频的保存路径 img_path = './img_video/test_img.jpg' # 图片保存路径 video_path = './img_video/test_video.mp4' # 视频保存路径 这个是图片处理的函数,由摄像头捕获的图片或视频帧可以通过这个函数处理后再返回,我这里没有作处理直接返回。 def process_frame(frame): 运行效果代码之前我找过directshow,CameraDS,VedioCaptureFromCam之类的东西,发现都不可以用。directshow是因为版本太老了,会出现: http://www.opencv.org.cn/forum.php?mod=viewthread&action=printable&tid=33813 VedioCaptureFromCam就会显示不出图片。所以后
文章转载:python语言下使用opencv接口cv2.VideoCapture()接口调用海康机器人工业相机 一、Opencv接口 使用 opencv 的官方接口 VideoCapture() 接口直接调用海康工业相机, 接下来简单介绍下 VideoCapture() 这个接口 接口:cv2.VideoCapture() 作用:获取本地目录下的视频文件或者使用本电脑的摄像头获取实时数据; 本文需要使用该接口调用海康工业相机; 参数写入 “0” ,调用的是本地电脑摄像头 参数写入 “1” ,调用的
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2001 无法解析的外部符号 “void __cdecl cv::imshow(class std::basic_string<char, 14988
rosdep init保错和rosdep update保错解决 ERROR: unable to process source [https://raw.githubusercontent.com/ m0_58869453: 感谢大佬,成功了 OpenCv中matchShapes()函数的使用 2301_76161961: 行,多谢博主。 OpenCv中matchShapes()函数的使用 网络通杀108: 不知道你具体要做的内容,我想象中,你可以尝试先检测图片中的所有轮廓,再将这些轮廓与标准轮廓进行一一的轮廓匹配,得分越接近零的匹配程度越高。 OpenCv中matchShapes()函数的使用 2301_76161961: 可以用这种方法提取一种图片中的特定轮廓吗? ROS中amcl配置需要特别注意的问题(base_link、base_footprint、footprint的联系) wolfcanlee: 谢谢大神分享您的知识,受益匪浅,真心感谢。手动抱拳。 cv2 dnn模块报错total(os[i]),Assertion failed) total(os[i]) > 0 in ‘cv::dnn::dnn4_v20201117::Net::Impl... vscode配置C++开发环境 WARNING: Retrying,树莓派更换pip源