c - OpenCV 图像大小调整和输入位图格式

标签 c opencv bitmap

我考虑如果我以 BGRA 格式或 RGBA 格式传递给 IplImage *input 图像是否有任何问题,以便使用可用的插值调整其大小算法:

NTER_NEAREST - a nearest-neighbor interpolation
INTER_LINEAR - a bilinear interpolation (used by default)
INTER_AREA - resampling using pixel area relation. It may be a preferred method for image decimation, as it gives moire’-free results. But when the image is zoomed, it is similar to the INTER_NEAREST method.
INTER_CUBIC - a bicubic interpolation over 4x4 pixel neighborhood
INTER_LANCZOS4 - a Lanczos interpolation over 8x8 pixel neighborhood

调整大小后的图像将返回到 RGBA 缓冲区中。所以我认为转换 RGBA -> BGRA 和调整大小后 BGRA -> RGBA 的额外操作将是多余的,只会减慢我的图像大小调整。也许我错了,重要的是在使用上述插值时图像将采用正确的 BGRA 格式。

IplImage *image = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 4);
    cvSetData(image, rgbaData, image->widthStep);

    // resize image
    float scale = 0.5;
    IplImage *resizedImage = cvCreateImage(cvSize(image->width*scale, image->height*scale), image->depth, image->nChannels);
    cvResize(image, resizedImage, CV_INTER_LANCZOS4);

总结我的问题是: 图像IplImage * 中采用 BGRA 数据格式有什么关系,而我想调整它的大小使用 cvResize() 和以上插值?

最佳答案

不,绝对没有区别。为了证明,你可以在这里查看:opencv code .代码有点难读,因为它使用了数学插值公式和 sse 内在函数的符号。

相同的权重用于插值 R、G、B、A。

关于c - OpenCV 图像大小调整和输入位图格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39919365/

相关文章:

c - 从文件读入C中的结构

c - sigsuspend 与处理程序执行期间传递的其他信号

macos - 是否有将 linux 构建转换为 mac 构建的通用策略?

c++ - 简单数据集的 SVM 训练问题 (Opencv 2.4.9)

java - Android SurfaceView BitmapFactory 内存不足异常

c - 如何确定使用哪个 D-Bus 绑定(bind)

c++ - realloc 错误而不是 malloc?

c++ - 从计算的光流中去除噪声

c++ - 从cpp中的mysql blob解析BMP文件

java - 如何从另一个 Activity 触发一个 Activity 的方法调用?