この投稿では、OpenCV を使用して画像を転置する方法について説明しましたが、ここでさらに詳しく説明します。画像がグレースケールの場合、C++ を使用して画像 (またはマトリックス) を転置する最速の方法は何ですか? 私の解決策は次のとおりです。
// image data is stored in an image buffer image*buffer_
unsigned char *mem = (unsigned char *) malloc(image.bufferSize_);
int height = image.Height();
int width = image.Width();
for(int i=0; i<height; i++)
{
unsigned char *ptr =image.buffer_+i*width;
for(int j=0; j<width; j++)
*(mem+j*height+i) = *(ptr+j);
}
memcpy(image.buffer_,mem,image.bufferSize_);
free(mem);
上記のコードに関するいくつかの説明: 基本的な画像情報と画像ピクセルを含む画像オブジェクトを作成します ( image.buffer_
)。イメージ ピクセルが に格納されるimage.buffer_
場合、イメージ ピクセルは行ごとに保持されると想定します。上記のコードをさらに改善するためのアイデアはありますか?