直播软件开发,图像视频的读取与保存,以及调用相机拍摄
直播软件开发,图像视频的读取与保存,以及调用相机拍摄实现的相关代码
1、图片的读取、显示和保存
1 | <br> //图片的读取与保存<br>#include <stdio.h><br>#include <iostream><br>#include <string><br>#include <opencv2\opencv.hpp><br>using namespace std;<br>using namespace cv;<br>int main()<br>{<br>cv::Mat a;<br>a = cv::imread("picture.jpeg", IMREAD_GRAYSCALE);//以灰色图像读取<br>if (!a.empty())<br>{<br>cout << "图像读取成功" << endl;<br>}<br>else<br>return -1;<br>cv::namedWindow("小黄人",WINDOW_NORMAL);//WINDOW_NORMAL使窗口可以调整大小,更多可选参数查看源码<br>cv::imshow("小黄人", a);<br>if (cv::imwrite("picture_gray.png", a))<br>{<br>cout << "图像保存成功" << endl;<br>}<br>else<br>cout << "图像保存失败" << endl;<br>cv::waitKey(0);//防止图片一闪而过<br>return 0;<br>} |
2、视频的读取、显示和保存
1 | <br> //视频的读取与显示<br>#include <stdio.h><br>#include <iostream><br>#include <string><br>#include <opencv2\opencv.hpp><br>using namespace std;<br>using namespace cv;<br>int main()<br>{<br>VideoCapture video("xiaohuangren.mp4");<br>if (!video.isOpened())<br>{<br>cout << "视频打不开" << endl;<br>}<br>else<br>{<br>cout << "视频中图像的宽度:" << video.get(CAP_PROP_FRAME_WIDTH) << endl;<br>cout << "视频中图像的高度:" << video.get(CAP_PROP_FRAME_HEIGHT) << endl;<br>cout << "视频的帧率:" << video.get(CAP_PROP_FPS) << endl;<br>cout << "视频的总帧数:" << video.get(CAP_PROP_FRAME_COUNT) << endl;<br>}<br>while (1)<br>{<br>Mat frame;<br>video >> frame;<br>if (frame.empty())<br>{<br>break;//所有帧图像都赋值给frame后再赋值一次frame变为空<br>}<br>cv::imshow("小黄人", frame);<br>waitKey(1000 / video.get(CAP_PROP_FPS));<br>}<br>waitKey(0);<br>return 0;<br>}<br>//调用摄像头进行拍摄显示<br>#include <stdio.h><br>#include <iostream><br>#include <string><br>#include <opencv2\opencv.hpp><br>using namespace std;<br>using namespace cv;<br>int main()<br>{<br>VideoCapture video(0);//0表示摄像头的ID号<br>if (!video.isOpened())<br>{<br>cout << "视频打不开" << endl;<br>}<br>else<br>{<br>cout << "视频中图像的宽度:" << video.get(CAP_PROP_FRAME_WIDTH) << endl;<br>cout << "视频中图像的高度:" << video.get(CAP_PROP_FRAME_HEIGHT) << endl;<br>cout << "视频的帧率:" << video.get(CAP_PROP_FPS) << endl;<br>cout << "视频的总帧数:" << video.get(CAP_PROP_FRAME_COUNT) << endl;<br>}<br>while (1)<br>{<br>Mat frame;<br>video >> frame;<br>cv::imshow("你", frame);<br>waitKey(10);<br>}<br>waitKey(0);<br>return 0;<br>}<br>//调用摄像头进行拍摄并保存视频<br>#include <stdio.h><br>#include <iostream><br>#include <string><br>#include <opencv2\opencv.hpp><br>using namespace std;<br>using namespace cv;<br>int main()<br>{<br>Mat img;<br>VideoCapture video(0);<br>if (video.isOpened())<br>{<br>cout << "摄像头打开成功" << endl;<br>}<br>else<br>{<br>cout << "摄像头打开失败" << endl;<br>return -1;<br>}<br>video >> img;<br>if (img.empty())<br>{<br>cout << "图片拍摄失败" << endl;<br>}<br>bool is_color = (img.type() == CV_8UC3);//判断图片是否为彩色图像<br>VideoWriter writer;<br>int video_encode = VideoWriter::fourcc('D','I','V','X');<br>writer.open("video_camera.mp4", video_encode, 30, img.size(), is_color);//30表示帧率<br>while (1)<br>{<br>if (!(video.read(img)))<br>{<br>cout << "摄像头读取完毕或者摄像头断开连接" << endl;<br>break;<br>}<br>writer.write(img);<br>imshow("video", img);<br>char c = waitKey(50);<br>if (c == 27)<br>{<br>break;<br>}<br>}<br>return 0;<br>} |
以上就是 直播软件开发,图像视频的读取与保存,以及调用相机拍摄实现的相关代码,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!