opencv从内存缓冲区中读取图像数据

1.从内存中加载图像数据

s_Image_Info stDispImgInfo = spImgInfo->m_stDispInfo;
//cv::_InputArray pic_arr(stDispImgInfo.pImageBuf, nWidth * nHeight);
//cv::Mat src_mat = cv::imdecode(pic_arr, IMREAD_COLOR);
cv::Mat img(nHeight, nWidth, CV_8UC3, stDispImgInfo.pImageBuf);
cv::Mat img2;
Size dsize(500, 500);
cv::resize(img, img2, dsize, 0, 0, INTER_LINEAR);
cv::namedWindow("Example1", 1);
cv::resizeWindow("Example1", 500, 500);
cv::imshow("Example1", img2);

注意:nHeight, nWidth的顺序,不要搞错
cv::Mat img(nHeight, nWidth, CV_8UC3, stDispImgInfo.pImageBuf);

2.将使用金字塔将图像裁剪并缩放到目标窗口大小

cv::Mat img(nHeight, nWidth, CV_8UC3, stDispImgInfo.pImageBuf);
			cv::namedWindow("Example1", 1);
			cv::pyrDown(img, img);
			//cv::pyrDown(img2, img2);
			//cv::pyrDown(img2, img2);
			cv::Size dSize(500, 500);
			cv::resize(img, img, dSize, 0, 0, INTER_LINEAR);
			cv::resizeWindow("Example1", 500, 500);
			cv::imshow("Example1", img);

注意:dsize是需要减少的尺寸,默认是图像的1/2;
cv::pyrDown(img, img,dsize);

你可能感兴趣的:(opencv,c++,qt,mfc)