我目前正在调整ImageSnap的一些内部结构,尝试进行临时修改,以便即时拍摄实时相机图像的快照。我注意到图像被调整大小,不考虑纵横比,并将问题追溯到以下行:
CVImageBufferRef frame;
// obtain frame
verbose("frame is %d x %d px\n", (int)CVPixelBufferGetWidth(frame),
(int)CVPixelBufferGetHeight(frame));
CIImage *ciimg = [CIImage imageWithCVImageBuffer:frame];
verbose("CIImage has %d x %d px\n", (int)[ciimg extent].size.width,
(int)[ciimg extent].size.height);
至少对于我正在使用的一个给定设备,这些行的输出是
frame is 1920 x 1080 px
CIImage has 1888 x 1062 px
显然,图像已调整大小,尽管我没有看到代码的任何部分要求调整大小。那是从哪里来的,更重要的是,我该如何预防呢?
我正在使用以下文档,但在其中找不到提示:
编辑:据我所知,没有缩放,而是进行裁剪,这是由于Core Video Programming Guide 中提到的干净光圈设置。所以现在的问题是如何将这个干净的光圈设置为全帧尺寸,或者如何避免转换考虑到这一点。