Opencv4.0:遍历Mat图像空间、读取摄像头
GitHub
https://github.com/gongluck/Opencv3.4-study.git
#include "opencv2/opencv.hpp"
using namespace cv;
#pragma comment(lib, "opencv_calib3d340d.lib")
#pragma comment(lib, "opencv_core340d.lib")
#pragma comment(lib, "opencv_dnn340d.lib")
#pragma comment(lib, "opencv_features2d340d.lib")
#pragma comment(lib, "opencv_flann340d.lib")
#pragma comment(lib, "opencv_highgui340d.lib")
#pragma comment(lib, "opencv_imgcodecs340d.lib")
#pragma comment(lib, "opencv_imgproc340d.lib")
#pragma comment(lib, "opencv_ml340d.lib")
#pragma comment(lib, "opencv_objdetect340d.lib")
#pragma comment(lib, "opencv_photo340d.lib")
#pragma comment(lib, "opencv_shape340d.lib")
#pragma comment(lib, "opencv_stitching340d.lib")
#pragma comment(lib, "opencv_superres340d.lib")
#pragma comment(lib, "opencv_video340d.lib")
#pragma comment(lib, "opencv_videoio340d.lib")
#pragma comment(lib, "opencv_videostab340d.lib")
int main()
{
//显示图片
Mat image = imread("test.png");
namedWindow("window");
imshow("window", image);
//遍历Mat图像空间
Mat mat(500, 300, CV_8UC3);
//mat.create(500, 300, CV_8UC3);
int size = mat.rows*mat.cols*mat.elemSize();
int esize = mat.elemSize();
for (int i = 0; i < size; i += esize)
{
mat.data[i] = 0;//B
mat.data[i+1] = 255;//G
mat.data[i+2] = 0;//R
}
namedWindow("Mat");
imshow("Mat", mat);
//读取摄像头
VideoCapture cam;
bool res = cam.open("rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov");
//bool res = cam.open(0);
Mat capture;
namedWindow("Cap");
if (cam.isOpened())
{
while (true)
{
//cam.read(capture);
if (!cam.grab())//读取并解码
continue;
if(!cam.retrieve(capture))//YUV转RGB
continue;
imshow("Cap", capture);
waitKey(1);
}
cam.release();
}
waitKey(0);
system("pause");
return 0;
}