gpt4 book ai didi

qt - 图像的宽度和步长宽度,现在是什么?

转载 作者:行者123 更新时间:2023-12-02 17:53:05 24 4
gpt4 key购买 nike

我有一个关于使用图像的width和widthstep的问题。

我将尺寸和图像数据作为QByteArray。我也有步幅。我的问题是如何使用widthstep正确填充Ipl图像,因为我的图像的宽度为4095,这不是8的整数倍。我已经成功填充了宽度为8的整数倍的图像,但是现在我被困在了这里眼前的问题。任何使用widthstep填充IplImage的通用代码都将受到欢迎和高度赞赏。 :D

这是我的开关盒的一部分。默认的8图像宽度的整数倍:

default:
{
IplImage* extracted_sar_image; // our image declaration
CvSize size; // size type has width and height attributes
size.height = sar_nrows_integer; // height of size
size.width = sar_ncols_integer;

extracted_sar_image = cvCreateImageHeader(size, IPL_DEPTH_8U, 1);
extracted_sar_image->imageData = sar_image_data_2.data();

cvNamedWindow("Image", CV_WINDOW_NORMAL );
cvShowImage("Image", extracted_sar_image);
cvMoveWindow("Image", 100, 100);
cvSaveImage("C:/Users/z_slant/Desktop/generated_extracted_sar_image.bmp", extracted_sar_image);
// delay to observe the image that is being saved
cvWaitKey(10000);
// deallocates the image data
cvReleaseImage(&extracted_sar_image);
// closes image display window
cvDestroyWindow("Image");

break;
}

最佳答案

您必须考虑到openCV结构的字节对齐。

openCV IplImage中的1行是widthStep字节长

QbyteArray中的1行是宽度字节长

因此,逐行复制数据应该可以。

qByteArray myArray;
IplImage* extracted_sar_image; // our image declaration
CvSize size; // size type has width and height attributes
size.height = sar_nrows_integer; // height of size
size.width = sar_ncols_integer;

extracted_sar_image = cvCreateImageHeader(size, IPL_DEPTH_8U, 1);

for (int row = 0 ; row < size.height ;row++)
{
memcpy(&extracted_sar_image->imageData[row*extracted_sar_image->widthStep],&myArray.data()[row*size.width],size.width);
}

关于qt - 图像的宽度和步长宽度,现在是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14950173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com