gpt4 book ai didi

opencv - 为什么相同的图像具有不同的像素值

转载 作者:行者123 更新时间:2023-12-02 16:47:35 26 4
gpt4 key购买 nike

我不明白为什么从视频和从文件(从此视频接收)接收到的Iplimage包含不同的像素值。此代码显示它。

CvCapture* readerAvi = cvCreateFileCapture( "input.avi" );
// Grad first frame from input video stream
if(!cvGrabFrame(readerAvi)) {
std::cerr << "Could not grab AVI frame." << std::endl;
return 0;
}
IplImage* videoFrame = cvRetrieveFrame(readerAvi);
if( !videoFrame )
break;

// Save values of some pixels in file
std::ofstream fout("frame_pixels.txt");
for(int y = 170; y < 270; ++y) {
for(int x = 30; x < 130; ++x) {
CvScalar s = cvGet2D(videoFrame, y, x );
fout << "x=" << x << " y=" << y << " " << s.val[0] << " " << s.val[1] << " " << s.val[2] << std::endl;
}
fout << "\n";
}
fout.close();
cvSaveImage("temp.jpg", videoFrame);

// Load saved image
videoFrame = cvLoadImage("temp.jpg");
fout.open("image_pixels.txt");

// Save values of some pixels in file
for(int y = 170; y < 270; ++y) {
for(int x = 30; x < 130; ++x) {
CvScalar s = cvGet2D(videoFrame, y, x );
fout << "x=" << x << " y=" << y << " " << s.val[0] << " " << s.val[1] << " " << s.val[2] << std::endl;

}
fout << "\n";
}
fout.close();

那么,为什么文件frame_pixels.txt和image_pixels.txt包含接近的数字却不相同?

最佳答案

我不能肯定地说不看数据本身,但是很可能要归因于图像所经历的压缩。如果视频来自一组图像,那么在创建视频时,这些图像中的每一个都会经过第二次压缩-例如对于MPEG文件,为JPEG compression(更多详细信息here)。这会在图像上造成伪影。如果图像是从视频中拍摄的静止帧,则在保存时可能已经进行了压缩。

尽管视频帧和静止图像在外观上看起来可比,但几乎可以肯定的是,由于图像的压缩方式会产生细微的差异。

关于opencv - 为什么相同的图像具有不同的像素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5582785/

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