我有以下问题。我用这种方式用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 ,因为这是公司的义务。
答案 0 :(得分:3)
旧的OpenCV版本通常不会在内存中连续布局数据,但在每行末尾使用一些填充。行的长度加上填充由widthStep
给出。如果您使用width
,则不要考虑(逐渐)填充,因此您会获得对角化效果。
所以你需要这样做:
img2->imageData[j*img2->widthStep + i] = 255;
<子> 你真的应该避免使用OpenCV 1,因为它现在已经10年了,它已经过时了。 子>