【问题标题】:Resize image with OpenCV with double scale使用双倍缩放的 OpenCV 调整图像大小
【发布时间】:2017-04-14 15:52:04
【问题描述】:

我有以下问题。我以这种方式使用 OpenCV 1 调整图像大小:

cvResize(img1, img2); 

地点:

img2= cvCreateImage( cvSize(img1->width * ratioScale + 0.5, img1->height * ratioScale + 0.5), IPL_DEPTH_8U, 1 );

然后,我想用 255 填充一半图像(只是为了测试):

for (int j = 0; j < img2->height; j++){ 
  for (int i = 0; i < img2->width/2; i++){ 
     img2->imageData[j*img2->width + i] = 255;
  }
}

ratioScale 具有小数点后 1 位精度(例如 1.5)时,它可以正常工作。否则(例如 1.59),它会给出几个白色的对角线而不是图像的一半。我不理解为什么。所有图像均为灰度。


我必须使用 OpenCV 1,因为这是公司的义务。

【问题讨论】:

    标签: c opencv image-resizing


    【解决方案1】:

    旧的 OpenCV 版本通常不会在内存中连续布置数据,而是在每行的末尾使用一些填充。行的长度加上填充由widthStep 给出。如果您使用width,您不会考虑(evantual)填充,因此您会得到这种对角化效果。

    所以你需要这样做:

    img2->imageData[j*img2->widthStep + i] = 255;
    

    你真的应该避免使用 OpenCV 1,因为它已经 10 岁了,而且它已过时

    【讨论】:

    • 很高兴它有帮助;D
    猜你喜欢
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多