完整程序,VS2017的VC的MFC使用2021年opencv打开摄像头并保存图片

wxleasyland@139.com

2021.12

一、参考

参考《VS2017+OPENCV在MFC中显示摄像头》,但用法是老opencv的了,程序有多个问题,https://www.freesion.com/article/2345375894/

opencv在MFC中显示图像要用到它的CvvImage类,但在opencv2.3.1的版本中,已经找不到这个类了。参见https://blog.csdn.net/szlcw1/article/details/21296523

opencv是采用Mat,Mat和Cimage需要相互转换,Cimage能显示到picture控件中,也可以保存图片!参考《OpenCV的Mat与ATL/MFC的CImage相互转换》https://blog.csdn.net/liangjialang/article/details/33320093

这里图像显示到picture控件,采用DrawPicToHDC()。参考《opencv+MFC在不使用CvvImage的情况下显示图片》opencv+MFC在不使用CvvImage的情况下显示图片_XHL_CSDN_DOW的博客-CSDN博客

opencv已经是采用版本c++接口了,cvloadimage函数是改成imread了。参见https://tieba.baidu.com/p/6151866924

以及《Mat imread 与 IplImage cvLoadImage区别》https://blog.csdn.net/lovexinxin1991/article/details/44903161

《cv::Mat的介绍》https://blog.csdn.net/szlcw1/article/details/37576689

不要使用CvCapture, IplImage, cvQueryFrame了,使用cv::VideoCapture,cv::Mat等。参见《cvQueryFrame does not return cv::Mat?》please try to avoid CvCapture, IplImage, cvQueryFrame, et al. refactor your code instead, and use cv::VideoCapture and cv::Mat,https://stackoverflow.com/questions/31490779/cvqueryframe-does-not-return-cvmat

重点!参考《【OpenCV3】视频读写cv::VideoCapture和cv::VideoWriter》【OpenCV3】视频读写cv::VideoCapture和cv::VideoWriter_BBZZ2的专栏-CSDN博客

二、过程和程序

vcpkg安装opencv:

vcpkg install opencv:x86-windows

VS2017的VC建立对话框MFC。

项目属性“C/C++”中增加vcpkg的包含目录,比如:C:\VC_PROJ\vcpkg-master\installed\x86-windows\include

项目属性“链接器\输入\附加依赖项”中增加vcpkg生成的opencv的lib库,比如:

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_calib3d.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_core.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_dnn.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_features2d.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_flann.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_highgui.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_imgcodecs.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_imgproc.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_ml.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_objdetect.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_photo.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_stitching.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_video.lib

c:\VC_PROJ\vcpkg-master\installed\x86-windows\lib\opencv_videoio.lib

添加一个Picture Control控件,ID是IDC_STATIC。

添加3个按钮及函数。

添加定时器响应函数。

运行前,把各个.dll从C:\VC_PROJ\vcpkg-master\installed\x86-windows\bin拷过去,提示要什么就拷什么。就能正常运行了。大概是需要这些.dll:

jpeg62.dll

libpng16.dll

lzma.dll

opencv_core.dll

opencv_imgcodecs.dll

opencv_imgproc.dll

opencv_videoio.dll

tiff.dll

webp.dll

zlib1.dll

需要新添加的程序如下:(应该有一些新的函数方法可以用,不管了)

///文件头和全局变量

#include <opencv2/highgui/highgui.hpp> 

#include <opencv2/imgproc/imgproc.hpp>

#include <opencv2/core/core.hpp>

#include <opencv2/videoio/videoio_c.h>

using namespace cv;

//定义图片和视频显示用到的一些类

cv::VideoCapture cap;

Mat v_frame;      //cvmat对象

Mat m_grabframe;

CImag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值