Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 使用opencv中的imread函数显示工件_Matlab_Opencv_Jpeg_Libjpeg - Fatal编程技术网

Matlab 使用opencv中的imread函数显示工件

Matlab 使用opencv中的imread函数显示工件,matlab,opencv,jpeg,libjpeg,Matlab,Opencv,Jpeg,Libjpeg,我使用imread函数读取一个jpeg文件,并以bmp格式保存rgb图像。比较这两个文件,我发现出现了工件,并使用绿色圆圈表示工件。OpenCV的版本是3.0。在SSE、SSE2和SSE3开关打开(默认设置)的情况下,我自己编译库。我的操作系统是Windows7专业版。您可以使用下图进行检查 如果我在Matlab中读取jpeg文件,则rgb图像是正确的。我在Matlab中以png格式保存rgb图像,使用opencv读取png文件,并将加载的图像保存在bmp文件中。一切都好。jpeg解码器似乎

我使用imread函数读取一个jpeg文件,并以bmp格式保存rgb图像。比较这两个文件,我发现出现了工件,并使用绿色圆圈表示工件。OpenCV的版本是3.0。在SSE、SSE2和SSE3开关打开(默认设置)的情况下,我自己编译库。我的操作系统是Windows7专业版。您可以使用下图进行检查

如果我在Matlab中读取jpeg文件,则rgb图像是正确的。我在Matlab中以png格式保存rgb图像,使用opencv读取png文件,并将加载的图像保存在bmp文件中。一切都好。jpeg解码器似乎有问题。使用的jpeg库是libjpeg.lib

由于大小限制,我从第二张图像中剪切了补丁。

您总是会得到一些JPEG格式的伪影。您可以通过更改所使用的量化表(通常会丢失压缩)来减少此类伪影的出现


JPEG编码器通常使用“质量”设置来更改量化表。

我在手机上看不到两种图像之间的差异。你能解释一下这些人工制品的外观和它们的可见位置吗?在第二幅图中,有一个绿色的圆圈,其中有几条水平的粉红色线条。在原始图像中,这样的线不存在。对不起,在第二张图像中,我看不到绿色圆圈或粉红色水平线。你确定你上传了正确的文件吗?!?从我的电脑上,我可以从第二张图片的链接中看到绿色的圆圈。我剪切了包含工件的补丁并将其粘贴到帖子中。好的。。。它在第二张图像中可见,但对于我的手机显示器来说太小了。我同意你的看法,jpeg编码器可能会产生伪影。但是,当我使用imread函数时,会出现伪影。这意味着伪影是由jpeg解码器而不是jpeg编码器产生的,只需要对jpeg图像进行解码,本质上是有损压缩。BMP图像仅封装BMP文件中的图像数据。BMP使用RLE压缩。