gtkmmが書いたGuiにcv :: Matを表示したい。だから私はテストをした。display gtkmmのopencv cv :: mat画像
私はウィジェットGtk::Image image
を持っている、と私は、次の2つの方法で画像を設定したい:
// first method, display from file
void displayImage1()
{
Glib::RefPtr<Gdk::Pixbuf> pixbuf = Gdk::Pixbuf::create_from_file("gtk.png");
image.set(pixbuf);
}
// second method, display from cv::Mat
void displayImage2()
{
cv::Mat outImage = cv::imread("gtk.png");
cv::cvtColor(outImage, outImage, CV_BGR2RGB);
Glib::RefPtr<Gdk::Pixbuf> pixbuf = Gdk::Pixbuf::create_from_data(outImage.data, Gdk::COLORSPACE_RGB,false, 8, outImage.cols, outImage.rows, outImage.step);
image.set(pixbuf);
}
第1の方法が適しています。
がしかし、第2の方法はうまく機能しない画像に示すように、私は、画面上の破壊された画像を得ました。
私がtrueにhas_alphaパラメータを設定した場合、結果も奇妙である(写真を参照。以下)。
Gtk :: DrawingAreaを使用して同様のテストが行われました。異なるIDEが使用されます(ただし、linuxではg ++コンパイラがすべて使用されます)。すべての同じ結果。
アップデート:私は、画像の多くをテストした
。場合によっては画像が壊れて、時にはプログラムがクラッシュすることがあります
プログラムが予期せず終了しました。
はあなたがイメージが実際にアルファチャンネルが含まれていないことを確認しましたか?灰色の背景が画像の一部でない限り、私のように思えます。 – KjMag
@KjMag THANKSしかし、has_alphaが "true"の結果も正しくないので、質問の結果を更新しました。 –
24の代わりに "bits_per_sample"? – Miki