提示コードですがアルファチャンネルが適用されないせいかどうやっても画面の透明部分が白くなってしまい立方体に表示されてしまいます。これはどうしたらいいのでしょうか? 色空間のコードコメント部のコードをよく見ましたがこれは正しいです。では何が違うのでしょうか?
試しにチャンネル数を+1していましたが出来ませんでした。
提示コードの//コメント部の数字は出力結果の数値です。
cpp
1#include "../Header/Texture.hpp" 2#include "../Header/Game.hpp" 3 4byte* LoadTexture(const char* str, float& width, float& height,int& channels ) 5{ 6 cv::Mat image; 7 image = cv::imread(str); 8 printf("image.channels: %d\n", image.channels()); // 3 9 10 if (image.empty() == true) 11 { 12 printf("image.empty()\n"); 13 return nullptr; 14 } 15 else { 16 printf("load \n"); 17 18 cv::cvtColor(image,image, cv::COLOR_BGRA2RGBA); 19 20 printf("channels: %d\n",image.channels()); //4 21 int size = image.rows * image.cols * image.channels(); 22 23 24 printf("size: %d\n", size); 25 byte* bytes = new byte[size]{ 0 }; 26 std::memcpy(bytes, (void*)image.data, (size_t)size); 27 28 // 画像サイズを取得 29 width = image.cols; // 横 30 height = image.rows; // 縦 31 32 channels = image.channels(); //チャンネル数を取得 33 34 35 return bytes; // unsigned char*を返す 36 } 37} 38
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。