Merge pull request #13184 from paroj:imshow_cvtscale

This commit is contained in:
Alexander Alekhin 2018-11-16 20:34:22 +00:00
commit 3705648c9b

View File

@ -2557,7 +2557,14 @@ void DefaultViewPort::updateImage(const CvArr* arr)
nbChannelOriginImage = cvGetElemType(mat);
CV_Assert(origin == 0);
cv::Mat src = cv::cvarrToMat(mat), dst = cv::cvarrToMat(image2Draw_mat);
cv::cvtColor(src, dst, cv::COLOR_BGR2RGB, dst.channels());
cv::Mat tmp;
int src_depth = src.depth();
double scale = src_depth <= CV_8S ? 1 : src_depth <= CV_32S ? 1./256 : 255;
double shift = src_depth == CV_8S || src_depth == CV_16S ? 128 : 0;
cv::convertScaleAbs(src, tmp, scale, shift);
cv::cvtColor(tmp, dst, cv::COLOR_BGR2RGB, dst.channels());
CV_Assert(dst.data == image2Draw_mat->data.ptr);
viewport()->update();