gtkで写真をコマ送り表示でするプログラムを作成しています。
しかし、ループ文が上手く動作しません。
お力を貸してください。
やりたいことは以下の通りです。
boxに写真を表示し、timeout_addで1秒毎に写真を更新。
写真はOpenCVを使用して、USBカメラから100fpsでキャプチャした画像を同じファイル名で保存し、上書きし続けるようになっています。
以下に私の書いたソースコードを添付します。
#include <gtk/gtk.h>
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *image;
GtkWidget *button;
static void cb_button_clicked (GtkWidget *button, gpointer user_data) /ボタン押下で終了する関数/
{
gtk_main_quit ();
}
static gboolean capture_loop(GtkWidget *box) /t/
{
image = gtk_image_new_from_file ("/home/pi/project/cam3/Capture.jpg"); /ファイルから画像を読み込んでイメージの作成/
gtk_box_pack_start (GTK_BOX (hbox), image, TRUE, TRUE, 0); /イメージをボックスに配置/
return (TRUE);
}
int
main(int argc, char** argv)
{
gtk_init (&argc, &argv); /GTK初期化/
window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /ウィンドウの作成/
gtk_widget_set_size_request (window, 500,400); /大きさ設定/
{ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); /*縦にウィジェットを配置するボックスの作成*/ gtk_container_add (GTK_CONTAINER (window), vbox); /*ボックスをウィンドウに配置*/ button = gtk_button_new_with_label ("✕"); /*終了ボタン作成*/ gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); /*ボタンをboxに配置*/ g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (cb_button_clicked), NULL); /*ボタンに関数リンク*/ g_timeout_add(1000, (GSourceFunc)capture_loop, NULL); /*ループ文*/ } g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); /*ウィンドウを閉じる際にプログラム終了*/ gtk_widget_show_all (window); /*ウィンドウの表示*/ gtk_main (); /*メインループ(ユーザーからの操作待ち)*/ return 0;
}
実行すると、写真は表示されず、終了ボタンのみ表示されます。
どこがおかしいのでしょうか。
ご回答よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/04 05:19
2017/10/04 08:15
2017/10/04 08:22