mingW32参考sdl安装测试-mingw32环境ubuntu18.04环境用opencv测摄像头vcpkg 安装依赖# 按需安装vcpkginstallopencv4[core,highgui,calib3d,jpeg,png,webp,dshow,thread,win32ui,fs]:x86-mingw-dynamic# 或者 全量安装vcpkginstallopencv4[all]:x86-mingw-dynamic安装的动态库添加到环境变量PATHD:\soft\vcpkg\installed\x86-windows\bin D:\soft\vcpkg\installed\x86-mingw-dynamic\bin测试CMakeLists.txtcmake_minimum_required(VERSION3.20)project(untitled21)set(CMAKE_CXX_STANDARD17)set(CMAKE_CXX_STANDARD_REQUIRED ON)set(OpenCV_INCLUDE_DIRD:/soft/vcpkg/installed/x86-mingw-dynamic/include/opencv4)set(OpenCV_LIB_DIRD:/soft/vcpkg/installed/x86-mingw-dynamic/lib)add_executable(${PROJECT_NAME}main.cpp)target_include_directories(${PROJECT_NAME}PRIVATE${OpenCV_INCLUDE_DIR})target_link_libraries(${PROJECT_NAME}PRIVATE${OpenCV_LIB_DIR}/libopencv_core4.dll.a${OpenCV_LIB_DIR}/libopencv_imgproc4.dll.a${OpenCV_LIB_DIR}/libopencv_highgui4.dll.a${OpenCV_LIB_DIR}/libopencv_imgcodecs4.dll.a${OpenCV_LIB_DIR}/libopencv_videoio4.dll.a)main.cpp#includeopencv2/core.hpp#includeopencv2/highgui.hpp#includeopencv2/imgproc.hpp#includeiostreamintmain(){cv::VideoCapturecap(0);// 0 默认摄像头if(!cap.isOpened()){std::cerr无法打开摄像头std::endl;return-1;}std::cout摄像头已打开按 Q 退出std::endl;cv::Mat frame;while(true){capframe;if(frame.empty())break;cv::imshow(Camera,frame);if(cv::waitKey(1)q)break;}cap.release();cv::destroyAllWindows();return0;}pythonpip 安装官方 OpenCV Pythonpipinstallopencv-pythonmain.py#!/usr/bin/env python3# -*- coding: utf-8 -*-importcv2importtimeimportos# 静默日志避免 obsensor 报错os.environ[OPENCV_LOG_LEVEL]SILENTdeflist_cameras(max_index5): 列出可用的摄像头索引 print(正在检测可用的摄像头...)available_cameras[]foriinrange(max_index):capcv2.VideoCapture(i,cv2.CAP_DSHOW)# Windows 推荐 DirectShow 后端ifcap.isOpened():ret,framecap.read()ifret:widthint(cap.get(cv2.CAP_PROP_FRAME_WIDTH))heightint(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))fpscap.get(cv2.CAP_PROP_FPS)iffps0:fps30# 默认值print(f摄像头{i}:{width}x{height}{fps:.1f}fps)available_cameras.append(i)cap.release()ifnotavailable_cameras:print(未检测到可用摄像头)else:print(f可用摄像头:{available_cameras})returnavailable_camerasdeftest_camera(camera_index0): 打开指定摄像头并显示实时画面 capcv2.VideoCapture(camera_index,cv2.CAP_DSHOW)ifnotcap.isOpened():print(f错误无法打开摄像头{camera_index})returnFalse# 设置分辨率可选cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)print(摄像头已成功打开)print(按 q 键退出按 s 键保存当前帧)frame_count0prev_timetime.time()whileTrue:ret,framecap.read()ifnotret:print(错误无法读取视频帧)breakframe_count1# 计算 FPScurr_timetime.time()fps1/(curr_time-prev_time)prev_timecurr_time# 在图像上显示帧计数和 FPScv2.putText(frame,fFrame:{frame_count},(10,30),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),2)cv2.putText(frame,fFPS:{fps:.1f},(10,70),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,255),2)# 显示图像cv2.imshow(摄像头测试,frame)keycv2.waitKey(1)0xFFifkeyord(q):print(用户请求退出)breakelifkeyord(s):filenamefcapture_{frame_count}.jpgcv2.imwrite(filename,frame)print(f已保存图片:{filename})cap.release()cv2.destroyAllWindows()print(f测试完成共处理了{frame_count}帧)returnTruedefmain():print(OpenCV 摄像头测试程序)print(*40)print(fOpenCV 版本:{cv2.__version__})cameraslist_cameras()ifnotcameras:print(没有找到可用的摄像头程序退出)return# 自动选择第一个摄像头camera_indexcameras[0]print(f\n正在测试摄像头{camera_index}...)test_camera(camera_index)print(程序结束)if__name____main__:main()