opencv学习(二)调用摄像头并输出画面

**

一、调用摄像头并输出画面

**
代码如下

import cv2 as cv


def video_demo():
    capture = cv.VideoCapture(0)# 打开摄像头,0代表的是设备id,如果有多个摄像头,可以设置其他数值
    while (True):#实现无限循环,保证read()函数能一帧一帧读取视频图像
        ret, frame = capture.read()#读取摄像头,它能返回两个参数,第一个参数是bool型的ret,其值为True或False,代表有没有读到图片;第二个参数是frame,是当前截取一帧的图片
        frame = cv.flip(frame, 1)# flip():图像翻转函数   第二个参数 小于0: 180°旋转,等于0: 上下颠倒,大于0: 水平颠倒(镜像图)
        cv.imshow("image", frame)
        c = cv.waitKey(5)
        if c == 27:#按esc关闭窗口
           break
       #if cv.waitKey(10) & 0xFF == ord('q'): 
       #   break  #键盘输入q退出窗口,不按q点击关闭会一直关不掉 也可以设置成其他键。



video_demo()
cv.waitKey(0);
cv.destroyAllWindows()

二、输出视频文件

代码如下

def video_demo():

    cv.namedWindow("video", 0)
    cv.resizeWindow("video", 1000, 600)  # 设置播放窗口长和宽
    while True:
        ret, frame = capture.read()  # 读取下一帧
        cv.imshow("video", frame)  # 显示目前帧
        cv.waitKey(1)  # 设置延迟,便于观看体验
        # if cv.waitKey(10) & 0xFF == ord('q'):
        #     break
        if cv.waitKey(5) == 27:
            break
        ret, frame = capture.read()  # 读取下一帧
    capture.release()#对内容进行释放


video_demo()
cv.destroyAllWindows()
好的,关于Java OpenCV调用摄像头动态识别人脸,我们可以采用以下步骤: 1. 下载安装Java OpenCV库 2. 编写Java代码,调用摄像头实时捕捉视频流 3. 对于每一帧画面进行人脸检测 4. 在检测到人脸时,标记出人脸的位置输出结果 以下是一个简单的示例代码,供您参考: ``` import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfRect; import org.opencv.core.Point; import org.opencv.core.Rect; import org.opencv.core.Scalar; import org.opencv.imgproc.Imgproc; import org.opencv.objdetect.CascadeClassifier; import org.opencv.videoio.VideoCapture; public class FaceDetection { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); CascadeClassifier faceDetector = new CascadeClassifier("haarcascade_frontalface_default.xml"); VideoCapture videoCapture = new VideoCapture(0); Mat frame = new Mat(); MatOfRect faceDetections = new MatOfRect(); if (videoCapture.isOpened()) { while (true) { videoCapture.read(frame); if (!frame.empty()) { faceDetector.detectMultiScale(frame, faceDetections); for (Rect rect : faceDetections.toArray()) { Imgproc.rectangle(frame, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0)); } Imgcodecs.imwrite("faceDetection.jpg", frame); } else { System.out.println("No captured frame -- Break!"); break; } } } videoCapture.release(); } } ``` 注意:此代码需要依赖于OpenCV的Java库,以及人脸识别的Haar级联分类器文件“haarcascade_frontalface_default.xml”。您需要根据您的环境,修改代码中的路径。 此代码可通过Java IDE或命令行运行,将检测到的人脸在每一帧画面上用绿色矩形标记出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值