[英]OpenCV image resizing and input bitmap format
我考慮是否以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代碼 。 該代碼有點難讀,因為它使用數學插值公式和sse內在函數的表示法。
相同的權重用於插值R,G,B,A。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.