直播軟體開發,影像視訊的讀取與儲存,以及呼叫相機拍攝

zhibo系統開發發表於2022-03-09

直播軟體開發,影像視訊的讀取與儲存,以及呼叫相機拍攝實現的相關程式碼

1、圖片的讀取、顯示和儲存

//圖片的讀取與儲存
#include <stdio.h>
#include <iostream>
#include <string>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
cv::Mat a;
a = cv::imread("picture.jpeg", IMREAD_GRAYSCALE);//以灰色影像讀取
if (!a.empty())
{
cout << "影像讀取成功" << endl;
}
else
return -1;
cv::namedWindow("小黃人",WINDOW_NORMAL);//WINDOW_NORMAL使視窗可以調整大小,更多可選引數檢視原始碼
cv::imshow("小黃人", a);
if (cv::imwrite("picture_gray.png", a))
{
cout << "影像儲存成功" << endl;
}
else
cout << "影像儲存失敗" << endl;
cv::waitKey(0);//防止圖片一閃而過
return 0;
}


2、視訊的讀取、顯示和儲存

//視訊的讀取與顯示
#include <stdio.h>
#include <iostream>
#include <string>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
VideoCapture video("xiaohuangren.mp4");
if (!video.isOpened())
{
cout << "視訊打不開" << endl;
}
else
{
cout << "視訊中影像的寬度:" << video.get(CAP_PROP_FRAME_WIDTH) << endl;
cout << "視訊中影像的高度:" << video.get(CAP_PROP_FRAME_HEIGHT) << endl;
cout << "視訊的幀率:" << video.get(CAP_PROP_FPS) << endl;
cout << "視訊的總幀數:" << video.get(CAP_PROP_FRAME_COUNT) << endl;
}
while (1)
{
Mat frame;
video >> frame;
if (frame.empty())
{
break;//所有幀影像都賦值給frame後再賦值一次frame變為空
}
cv::imshow("小黃人", frame);
waitKey(1000 / video.get(CAP_PROP_FPS));
}
waitKey(0);
return 0;
}
//呼叫攝像頭進行拍攝顯示
#include <stdio.h>
#include <iostream>
#include <string>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
VideoCapture video(0);//0表示攝像頭的ID號
if (!video.isOpened())
{
cout << "視訊打不開" << endl;
}
else
{
cout << "視訊中影像的寬度:" << video.get(CAP_PROP_FRAME_WIDTH) << endl;
cout << "視訊中影像的高度:" << video.get(CAP_PROP_FRAME_HEIGHT) << endl;
cout << "視訊的幀率:" << video.get(CAP_PROP_FPS) << endl;
cout << "視訊的總幀數:" << video.get(CAP_PROP_FRAME_COUNT) << endl;
}
while (1)
{
Mat frame;
video >> frame;
cv::imshow("你", frame);
waitKey(10);
}
waitKey(0);
return 0;
}
//呼叫攝像頭進行拍攝並儲存視訊
#include <stdio.h>
#include <iostream>
#include <string>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img;
VideoCapture video(0);
if (video.isOpened())
{
cout << "攝像頭開啟成功" << endl;
}
else
{
cout << "攝像頭開啟失敗" << endl;
return -1;
}
video >> img;
if (img.empty())
{
cout << "圖片拍攝失敗" << endl;
}
bool is_color = (img.type() == CV_8UC3);//判斷圖片是否為彩色影像
VideoWriter writer;
int video_encode = VideoWriter::fourcc('D','I','V','X');
writer.open("video_camera.mp4", video_encode, 30, img.size(), is_color);//30表示幀率
while (1)
{
if (!(video.read(img)))
{
cout << "攝像頭讀取完畢或者攝像頭斷開連線" << endl;
break;
}
writer.write(img);
imshow("video", img);
char c = waitKey(50);
if (c == 27)
{
break;
}
}
return 0;
}


以上就是 直播軟體開發,影像視訊的讀取與儲存,以及呼叫相機拍攝實現的相關程式碼,更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2868513/,如需轉載,請註明出處,否則將追究法律責任。

相關文章