gpt4 book ai didi

c++ - 使用 OpenCV 以 JPG 格式编码图像以避免重影效果

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:29 24 4
gpt4 key购买 nike

我有一个应用程序 (openCV - C++) 从网络摄像头抓取图像,将其编码为 JPG 并将其从服务器传输到客户端。 Thwebcam 是立体的所以实际上我有两个图像,左和右。在客户端中,当我收到图像时,我对其进行解码并生成立体 3D 效果。为此,我使用 OpenCV ...好吧,我以这种方式对图像进行编码:

 params.push_back(CV_IMWRITE_JPEG_QUALITY);
params.push_back(60); //image quality
imshow(image); // here the anagliphic image is good!
cv::imencode(".jpg", image, buffer, params);

并以这种方式解码:

 cv::Mat imageRecieved = cv::imdecode( cv::Mat(v), CV_LOAD_IMAGE_COLOR );

我看到的是,这种编码在立体图像中生成了“重影效果”(伪影?),因此对象的边缘效果不好。例如,如果看一扇门,门的边缘会产生鬼影效果。我确信这取决于编码,因为如果我在编码指令之前显示 Anaglyph 图像,则效果很好。我不能使用 PNG,因为它会生成大图像,这是服务器和客户端之间的连接问题。

我在寻找 GIF,但如果我理解得很好,cv::encode 函数不支持它。

那么还有另一种方法可以将 cv:Mat obj 编码为 JPG 而不会产生这种不良影响并且不会增加图像的大小吗?

最佳答案

如果您的服务器仅用作图像存储,您可以将 2 个原始立体图像(压缩)发送到服务器,并在需要时生成 Anaglyph。我认为,如果您从服务器获取图像对 (JPEG),然后生成 Anaglyph(客户端),它将不会出现重影。可能是组合的压缩图像对小于 Anaglyph .png

关于c++ - 使用 OpenCV 以 JPG 格式编码图像以避免重影效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22984356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com