#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/videoio.hpp"
using namespace std;
using namespace cv;
void pngWrite()
{
//创建带alpha通道的Mat
Mat mat(480, 640, CV_8UC4);
for (int i = 0; i < mat.rows; ++i) {
for (int j = 0; j < mat.cols; ++j) {
Vec4b&rgba = mat.at<Vec4b>(i, j);
rgba[0] = UCHAR_MAX;
rgba[1] = saturate_cast<uchar>((float(mat.cols - j)) / ((float)mat.cols) *UCHAR_MAX);
rgba[2] = saturate_cast<uchar>((float(mat.rows - i)) / ((float)mat.rows) *UCHAR_MAX);
rgba[3] = saturate_cast<uchar>(0.5 * (rgba[1] + rgba[2]));
}
}
vector<int>compression_params;
compression_params.push_back(IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);
//显示图片
imwrite("1.png", mat, compression_params);
imshow("1.png", mat);
waitKey(0);
return ;
}
int main(int argc, char** argv)
{
pngWrite();
VideoCapture* cap = new VideoCapture();
bool ret = cap->open("rtsp://admin:@192.168.11.88:554/mode=real&idc=1&ids=2");
//bool ret = cap->open("/var/out/2.mp4");
if(!ret)
{
printf("open err.\n");
return 0;
}
int m_fps = cap->get(CAP_PROP_FPS);//每秒显示帧数
printf("fps:%d\n", m_fps);
while(1)
{
Mat orc;
(*cap) >> orc;
if (orc.empty())
{
printf("orc is empty\n");
break;
}
printf("%d %d\n", orc.cols, orc.rows);
vector<int>compression_params;
compression_params.push_back(IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);
imwrite("2.png", orc, compression_params);
getchar();
}
return 0;
}
opencv保存png图
于 2017-08-25 16:52:44 首次发布