如何在 Opencv 中显示一个 Mat

     2023-02-21     109

关键词:

【中文标题】如何在 Opencv 中显示一个 Mat【英文标题】:how to display a Mat in Opencv 【发布时间】:2014-07-31 23:40:52 【问题描述】:

对于存储图像的mat,使用imshow很容易显示。但是如果Mat的数据类型是CV_32FC1,如何显示这个mat?

我试过imshow,但显示的数字是全白的,当我放大int时,它仍然是全白的,我看不到mat中的浮点数。

有没有人知道如何显示整个 mat 矩阵?

ps:谢谢回复。我将发布一些代码和数字以显示更多详细信息: 代码:

Mat mat1;
mat1 = Mat::ones(3,4,CV_32FC1);
mat1 = mat1 * 200;
imshow("test", mat1);
waitKey(0);

Mat dst;
normalize(mat1, dst, 0, 1, NORM_MINMAX);
imshow("test1", dst);
waitKey(0);

mat1.convertTo(dst, CV_8UC1);
imshow("test2", dst);
waitKey(0);

return 0;

输出:

放大 150% 后:

然后我放大 150% 后,我们可以看到“测试”是全白的,我们看不到它的元素值。 'test1' 完全是黑色的,我们仍然看不到它的元素值。但是对于'test2',它是灰色的,我们可以看到它的元素值是200。

这个实验是否意味着imshow()只能显示CV_8UC1而我们不能显示任何其他数据类型?

【问题讨论】:

【参考方案1】:

如果image是CV_32F类型的Mat,如果图像是32位浮点,imshow()将像素值乘以255——即取值范围[0,1]映射到[ 0,255]。 所以你的浮点图像的范围必须是 0 .. 1。

这将显示一个 CV32F 图像,无论范围是多少:

        cv::Mat dst
        cv::normalize(image, dst, 0, 1, cv::NORM_MINMAX);
        cv::imshow("test", dst);
        cv::waitKey(0);

【讨论】:

只是想知道为什么投反对票:这种方式非常适合我。 我也想知道为什么投反对票。在 [0:1] 中标准化您的浮动图像并调用 imshow 是完全有效的。为我 +1

如何在 MFC 视图上显示 OpenCV Mat

】如何在MFC视图上显示OpenCVMat【英文标题】:HowtodisplayOpenCVMatonMFCView【发布时间】:2011-12-1408:59:14【问题描述】:我认为在MFC视图上显示OpenCV2Mat很简单,但事实并非如此。ThisisonlyrelevantmaterialIfoundongoogle。请原谅我的无知,但我... 查看详情

如何在opencv中交换Mat行?

】如何在opencv中交换Mat行?【英文标题】:HowtoswaprowsofMatinopencv?【发布时间】:2020-09-1703:06:11【问题描述】:我想在MatM中交换两行,我有两个小问题:要交换两行,我需要一个MatrixRowtemp(伪代码)来备份要替换的第一行。但是... 查看详情

如何在矩形子区域中划分 OpenCV Mat?

】如何在矩形子区域中划分OpenCVMat?【英文标题】:HowtodivideanOpenCVMatinrectangularsub-regions?【发布时间】:2015-09-3015:46:34【问题描述】:我想将一个简单的Mat(200x200)划分为不同的区域(10x10)。我创建了2个循环,然后创建了一个Rect... 查看详情

opencv中,新建一个mat变量,但是只是赋值了其数据,不知道其宽高,请问如何正确显示?

如题,谢谢各位大侠了参考技术A下面就是基本的过程Matsrc=imread("***.jpg");imshow("test",src);waitKey(0); 参考技术B赋了值是从文件里取得的值么。 参考技术C听起来好高端 查看详情

在 OpenCV 的窗口中添加两个 Mat

】在OpenCV的窗口中添加两个Mat【英文标题】:AddingtwoMatintoawindowinOpenCV【发布时间】:2013-05-0311:20:57【问题描述】:根据OCV阵列上的操作链接,我没有找到拥有两个不同Mat并将它们放入显示两个图像的唯一窗口的方法。PS:这不是... 查看详情

opencv编程中cvmat到mat如何进行数据转换?

在openCV中,Mat是一个多维的密集数据数组。可以用来处理向量和矩阵、图像、直方图等等常见的多维数据。Mat类型较CvMat与IplImage类型来说,有更强的矩阵运算能力,支持常见的矩阵运算。在计算密集型的应用当中,将CvMat与IplIma... 查看详情

在 OpenCV 中更新 Mat 的子矩阵

...=Mat::zeros(13,6,CV_32FC1);我只想更新一个4x3的子矩阵,但我对如何以有效的方式访问该矩阵有疑问。Matmat43=Mat::eye(4,3,CV_32FC1);//thisis 查看详情

Mat 在 OSX 上的 opencv2.4.10 中显示不同

】Mat在OSX上的opencv2.4.10中显示不同【英文标题】:Matshowdifferentinopencv2.4.10onOSX【发布时间】:2016-10-2117:47:15【问题描述】:在opencv的项目中,程序如下:MatA=Mat(9,2,CV_16S);intx0,y0;ifstreamfr("points.txt",ios::in);for(intj=0;j<9;j++)frs>>x0;f... 查看详情

如何在 OpenCV Mat 中保留固定的缓冲区大小?

】如何在OpenCVMat中保留固定的缓冲区大小?【英文标题】:HowcanIreserveafixedbuffersizeinOpenCVMat?【发布时间】:2019-06-1322:47:54【问题描述】:我正在重写一些遗留代码,这些代码使用原始C样式数组对双精度数进行矩阵运算。由于代... 查看详情

安卓上的 OpenCV,Mat.rows() = 0

】安卓上的OpenCV,Mat.rows()=0【英文标题】:OpenCVonandroid,Mat.rows()=0【发布时间】:2018-09-2819:26:11【问题描述】:我有一个Uri指向我选择的图像。我想将图像存储在Mat变量中,对其进行编辑并将其显示在ImageView中。到目前为止,我... 查看详情

在 OpenCV 中合并两个 Mat-Objects

】在OpenCV中合并两个Mat-Objects【英文标题】:MergetwoMat-ObjectsinOpenCV【发布时间】:2015-02-2812:54:31【问题描述】:我写了一个小函数,以便能够将图像的像素“粘贴”在另一个图像之上,但不知何故它不起作用:虽然我的“粘贴”... 查看详情

如何在 Python 中使用 OpenCV 创建 Mat 矩阵?

】如何在Python中使用OpenCV创建Mat矩阵?【英文标题】:HowdoIcreateaMatmatrixusingOpenCVinPython?【发布时间】:2021-03-2904:22:03【问题描述】:显然这条线是错误的。matOut=cv2::Mat::Mat(height,width,cv2.CV_8UC4)这个也是。MatmatOut(height,width,cv2.CV_8UC4)... 查看详情

选择一个 Mat 的子集并复制它们以在 C++/Opencv 中创建一个新的 mat

...布时间】:2013-07-1704:22:26【问题描述】:在C++/opencv中,如何选择大Mat的子集并复制它们以创建新Mat?我知道如何使用copyto、colrange、rowrange等,但不知道如何将它们组合在一起以开 查看详情

OpenCV / C++ - 如何在向量上使用adaptiveThreshold而不是Mat?

】OpenCV/C++-如何在向量上使用adaptiveThreshold而不是Mat?【英文标题】:OpenCV/C++-HowtouseadaptiveThresholdonvectorinsteadofMat?【发布时间】:2015-04-1617:13:37【问题描述】:我有一个关于在C++中使用OpenCV中的adaptiveThreshold函数的问题。(这里是... 查看详情

如何在 OpenCV 中计算 Mat 的最大像素值 [重复]

】如何在OpenCV中计算Mat的最大像素值[重复]【英文标题】:HowtocomputemaximumpixelvalueofMatinOpenCV[duplicate]【发布时间】:2012-09-2022:33:18【问题描述】:这应该是显而易见的,我想。但是我找不到在OpenCVMat的所有像素中找到最大值的简... 查看详情

如何将opencv Mat矩阵保存到可以在Matlab中加载的文件中

】如何将opencvMat矩阵保存到可以在Matlab中加载的文件中【英文标题】:HowtosaveopencvMatmatrixtoafilethatcanbeloadedinMatlab【发布时间】:2019-04-2722:13:18【问题描述】:我想在我的OpenCV代码(Qt内)中检查一些Mat矩阵的详细信息。据我所知... 查看详情

在opencv中,如何将二维数组转化为一副图像进行显示?

你的二维数组是不是仅存放图像数据?如果是这样的话你可以这样做:IplImage*img=cvCreateImage(CvSizesize,intdepth,intchannels);//size为图像宽高,depth为位深度,channels为通道数img->imageData=Arr;//Arr为二维数组名cvNamedWindow("Image",1);//... 查看详情

在opencv中,使用Mat类型计算马氏距离太慢了。如何提高效率?

】在opencv中,使用Mat类型计算马氏距离太慢了。如何提高效率?【英文标题】:Inopencv,It\'stooslowbyuseMattypetocalculatetheMahalanobisdistance.Howcaniimprovetheefficiency?【发布时间】:2017-11-2106:01:09【问题描述】:Matimv;Mat_<double>end(1,1);doub... 查看详情