0

OpenCv Mat を vx_image に変換するためのリファレンスとして opencv_npp_interop の例に従っていますが、この例はグレースケール イメージ (単一チャネル) のみを示しています。そこで、3 チャンネル (RGB) マットを vx_image (RGB) に変更しようとしました。

vx_image createRGBImageFromRGBMat(vx_context& context, cv::Mat& mat)
{
    vx_imagepatch_addressing_t src_addr = {
        mat.cols, mat.rows, sizeof(vx_uint8)*3, mat.cols * sizeof(vx_uint8)*3, VX_SCALE_UNITY, VX_SCALE_UNITY, 1, 1 };
    void* src_ptr = mat.data;

    vx_image image = vxCreateImageFromHandle(context, VX_DF_IMAGE_RGB, &src_addr, &src_ptr, VX_IMPORT_TYPE_HOST);

    return image;
}

返された vx_image のプレーン数属性を照会すると、1 つのプレーンしか表示されません。私はそれが3プレーン(RGB)であるべきだと仮定しています。

次に、返されたはずの RGB 画像を YUV に変換してプレーンをクエリすると、3 つのプレーンが得られますが、個別のチャンネルを抽出すると「Y」チャンネルしか抽出できず、他の 2 つの vxuChannelExtract 呼び出しは「-10」になります。 : 無効なパラメータ".

したがって、問題の原因はまだRGB変換にあると思います。私は何を間違えましたか?

4

1 に答える 1