2 2 Gtk+ GUI (widget ) GUI Gtk+ GUI Gtk+ GUI 2.2 Gtk GUI sample1.c Web (http://www.cyber.t.u-tokyo.ac.jp/ tani/class/mech enshu/) enshu2009gui1.tar.gz

Similar documents
TA tani/class/mech enshu/ X Window System GUI(Graphical User Interface) GUI (event driven) 2 Gtk

2 2 GtkWidget* gtk_drawing_area_new ( void ); /* */ void gtk_drawing_area_size ( GtkDrawingArea *darea, gint width, gint height); realize size allocat

ÆþÌçGTK+


ÆþÌçGTK+

表紙

OpenCV IS Report No Report Medical Information System Labratry

2 Eclipse 2.1 Eclipse 1. Eclipse 2. 3 ( 4) E:Yworkspace OK 3 Eclipse 4 3. Eclipse 5 5 Eclipse Eclipse 2. 7 C 2

untitled

1 1 Pixel 0 n 1 n=8 56 R G B RGB M RGB (1) M = 0.99R G B (1) () 4 π d 4 B = L cos φ () 4 ID B L d ID φ d / ID F R φ (3) R

t.dvi

GUI プログラムは これまでのおさらい 初期化 無限ループ 終了処理 低レベルから高レベルまで Xlib Xt gtk+ 等々 言語も自由自在 C C++ C# VB.NET Python 等々 Shell Script でもできる zenity 使ってね

TA TA TA abcdefgh abcdefgh C PC Wii bluetooth 2.2 Bluetooth USB Princeton PTM-UBT3S 1 1

第3章 OpenGL の基礎

1 CUI CUI CUI 1.1 cout cin redirect.cpp #i n c l u d e <s t r i n g > 3 using namespace std ; 5 6 i n t main ( void ) 7 { 8 s t r i n g s ; 10 c

第3章 OpenGL の基礎

1 bmp gif,png,jpg bmp gif,png jpg BPG 2014 jpg *3 RAW TIFF RAW CCD CMOS R,G,B TIFF net *4 1.1 JPEG HP JPEG 3 1 4, 1 8, 1 16 JPEG SD jpeg JPEG RGB YCrC

double float

Microsoft Word - C.....u.K...doc

画像研修

ÆþÌçGTK+

<4D F736F F D CF097AC E A D836A B2E646F6378>

BIT -2-

RaVioli SIMD

main.dvi

2008 DS T050049


GUI GUI Ruby GUI Ruby/Tk Ruby/Gtk GUI Ruby GUI

もう少し詳しい説明 1. アルゴリズムを構築するための 4 枚のサンプル画像を次々と読み込むここで重要なことは画像を順番に読み込むための文字列操作 for 文の番号 i を画像の番号として使用している strcpy は文字列のコピー,sprinf は整数を文字列に変換,strcat は文字列を繋げる

スライド 1

r07.dvi

ohp07.dvi

210 資料 TI 89 (1) TI 89 2nd ON HOME ( ) ( ) HOME =! ENTER ( ) = (10) ENTER ( ) [ ] { } ( )! 2 =! ( ) ( ) 2 3x ( 2y + yz) ( ) 3x ( ( ) 2y + y z)

Nios® II HAL API を使用したソフトウェア・サンプル集 「Modular Scatter-Gather DMA Core」


1.ppt

第5回お試しアカウント付き並列プログラミング講習会


N08

P05.ppt

t 2 2 t 2 t F ( ) p- 2 2 F 2 G F ( ) 2 2 F 2 G F ( ) 2 2 2

joho07-1.ppt

main

23_33.indd

mstrcpy char *mstrcpy(const char *src); mstrcpy malloc (main free ) stdio.h fgets char *fgets(char *s, int size, FILE *stream); s size ( )

はじめに ハンズオンだと思う者にはハンズオンであり もくもく会だと思う者にはもくもく会である

Linux XScreenSaver T020074

untitled

r03.dvi

第7章 レンダリング

第7章 レンダリング

Garment Creator


ÆþÌçGTK+

2

TI 89

資料5:聖ウルスラ学院英智小・中学校 提出資料(1)

ohp03.dvi

endo.PDF


2

08+11Extra

TEX American Mathmastical Society WINDOWS Microsoft Corporation Adobe Illustrator Acrobat Adobe Systems Incorporated TM L A TEX 2ε(pL A TEX 2ε) L A TE

Ł½’¬24flNfix+3mm-‡½‡¹724

Safari AppletViewer Web HTML Netscape Web Web 15-1 Applet Web Applet init Web paint Web start Web HTML stop destroy update init Web paint start Web up


untitled

I J

I 2 tutimura/ I 2 p.1/??

untitled

Microsoft PowerPoint - CV03.ppt [互換モード]

FX ) 2

FX自己アフリエイトマニュアル

2 3



ProVisionaire Control V3.0セットアップガイド

PowerPoint Presentation

関数のグラフを描こう

Abstract Kinect for Windows RGB Kinect for Windows v Kinect for Windows v2

13 Student Software TI-Nspire CX CAS TI Web TI-Nspire CX CAS Student Software ( ) 1 Student Software 37 Student Software Nspire Nspire Nspir

Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=

II ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 D

新版明解C言語 実践編

untitled

untitled


A/B (2018/10/19) Ver kurino/2018/soft/soft.html A/B


(300, 150) 120 getchar() HgBox(x, y, w, h) (x, y), w, h #include <stdio.h> #include <handy.h> int main(void) { int i; double w, h; } HgO

- - Microsoft Windows Microsoft Corporation - Windows Vista Microsoft Corporation - TANDD

C C UNIX C ( ) 4 1 HTML 1

第5章 システム内部設計                            


01

comment.dvi

ORiN CAO USB (3) CAO CAO USB ORiN CAO USB 1 2 (4) CAO 3 CAO USB 4 PC OS 1 CPU:Pentium IV 2. 8GHz :512MByte Windows XP SP2 Professional ORiN2 SDK USB D

8 / 0 1 i++ i 1 i-- i C !!! C 2

C B

/* sansu1.c */ #include <stdio.h> main() { int a, b, c; /* a, b, c */ a = 200; b = 1300; /* a 200 */ /* b 200 */ c = a + b; /* a b c */ }

Transcription:

1 2009 B4 GUI TA http://www.cyber.t.u-tokyo.ac.jp/ tani/class/mech enshu/ 2008 6 11 1 1 1 4 C GUI(Graphical User Interface) X Window System GUI 5 GUI 2 Gtk+ GUI 2.1 GUI GUI GUI (event driven) GUI GUI GUI GUI GUI GUI

2 2 Gtk+ GUI (widget ) GUI Gtk+ GUI Gtk+ GUI 2.2 Gtk GUI sample1.c Web (http://www.cyber.t.u-tokyo.ac.jp/ tani/class/mech enshu/) enshu2009gui1.tar.gz % tar xvzf enshu2009gui1.tar.gz % cd 2009gui1 % make 1 1 sample1.c Gtk+ Gtk+ gtk.h sample1.c 12 #include<gtk/gtk.h> gtk.h Gtk+ *1 54 Gtk *1 gtk.h gtk.h

2.3 3 ( ) Gtk int main (int argc, char* argv[]) { { } gtk_set_local(); /* gtk_init(&argc, &argv); /* gtk_get_rc_parse(" "); /* Gtk... sample1.c gtk_init() argv Gtk gtk_init() Gtk+ GUI ( ) GUI ( ) ( ) GUI Gtk+ GUI GtkWidget gtk_widget_show() gtk_widget_show() gtk_widget_show() GUI Gtk 125 gtk_main() gtk_main() main() 2.3 Gtk+ 3

4 2 Gtk+ GUI window Gtk+ sample1.c 67 69 /* GtkWidget *window; /* window window = gtk_window_new(gtk_window_toplevel); /* gtk_window_set_title(gtk_window(window), " "); /* gtk_container_border_width(gtk_container(window), 10); label label label /* GtkWidget *label; /* label label = gtk_label_new(" "); sample3.c 78 80 label label gtk_label_set(gtk_label(label), " "); button

2.4 5 /* GtkWidget *button; /* button button = gtk_button_new_with_label(" "); 2.4 GUI OS Gtk+ ( ) 2 gint gtk_signal_connect( GtkObject object name func gchar GtkSignalFunc *object, *name, func, gpointer func_data ); : GTK ( ) : : func_data : void callback_func( GtkWidget *widget, gpointer data ); widget : data :

6 2 Gtk+ GUI gint gtk_signal_connect_object( GtkObject object name func gchar GtkSignalFunc *object, *name, func, GtkObject *slot_object ); : GTK ( ) : : slot_object : func GTK void callback_func( GtkWidget *widget ); widget : gtk_signal_connect() gtk_signal_connect_object() 1 1 Gtk+ pressed released clicked enter leave sample1.c counter 1 1. sample1.c. 2. sample1.c button2 2 2.5 GUI

2.5 7 2 1.2 GUI Gtk+ GUI Gtk+ (= ) 3 4 gtk_hbox_new() gtk_box_pack_start() gtk_box_pack_end()

8 3 gtk_vbox_new() gtk_box_pack_start() gtk_box_pack_end() 2 1. sample2.c C( ) ( 5) 2. (+,-,*,/) 3. ( ) 5 2.1 3 3.1 sample3.c sample3

3.2 9 3 1. sample3.c 2. sample3.c image_proportion() 6 3. sample3.c image_skew() 7 4. sample3.c image_radial() 8 ( ) image_processing() image_processing() 6 3.2 7 3.3 8 3.4 3.2 PNG, JPEG, TIFF, BMP, GIF PNM(Portable anymap) PGM(Portable Grayscale Map) PPM(Portable Pixel Map) P6 256 256 x y 255...( RGB )... PGM

10 3 P5 256 256 255...( )... 1 P5 P6 P5 P6 2 2 256 256 pixel 255 pixel 0 255 0 255 8 bit(=1 byte) 1pixel 1byte 1pixel RGB 8bit 3byte 3.3 GTK GDK (GIMP Drawing Kit) GDK (X Window system XLib ) (Wrapper) GDK http://www.gnome.gr.jp/docs/gtk+-1.2.x-refs/gdk/index.html DrawingArea GtkWidget* gtk_drawing_area_new ( void ); /* void gtk_drawing_area_size ( GtkDrawingArea *darea, gint width, gint height); realize size allocate expose event RGB ( ) GDK GdkRgb GdkRgb gdk_rgb_init()

3.3 11 core (GtkPreview ) GdkRgb GTK+ (class_init) gdk_rgb_init() GdkRgb void gdk_rgb_init (void); void gdk_draw_rgb_image ( GdkDrawable *drawable, GdkGC *gc, gint x, gint y, gint width, gint height, GdkRgbDither dith, guchar *rgb_buf, gint rowstride ); void gdk_draw_gray_image ( GdkDrawable *drawable, GdkGC *gc, gint x, gint y, gint width, gint height, GdkRgbDither dith, guchar *buf, gint rowstride ); drawable gc x y width height dith rgb_buf : GdkDrawable ( GdkWindow) : ( GDK ) : drawable X : drawable Y : : : GdkRgbDither : Packed24 (Packed : Depth ) rowstride : rgb_buf

12 3 gdk_draw_rgb_image () Drawable RGB gdk_draw_gray_image () Drawable rowstride 0 <= i < width 0 <= j < height pixel(x+i, y+j) (R) = rgb_buf[j*rowstride + i*3] (G) = rgb_buf[j*rowstride + i*3 + 1] (B) = rgb_buf[j*rowstride + i*3 + 2] 3.4 GUI / entry scale entry entry entry /* GtkWidget *entry; /* entry entry = gtk_entry_new_with_max_length (50); entry gchar *entry_text; entry_text = gtk_entry_get_text (GTK_ENTRY(entry)); scale entry GUI scale scale scale adjustment adjustment gtk_adjustment_new()

3.4 13 GtkObject* gtk_adjustment_new ( gfloat value, gfloat lower, gfloat upper, gfloat step_increment, gfloat page_increment, gfloat page_size ); value : lower : upper : step_increment : page_increment : page_size : upper upper - page_size scale adjustment /* GtkObject *adjustment; GtkWidget *scale; /* adjustment adjustment = gtk_adjustment_new(0, 0, 255, 1, 1, 0); /* on_slider_moved() gtk_signal_connect(gtk_object(adjustment), "value_changed", GTK_SIGNAL_FUNC(on_slider_moved), adjustment); /* scale adjustment scale = gtk_vscale_new(gtk_adjustment(adjustment)); /* gtk_scale_set_digits(gtk_scale(scale), 0); scale

14 3 void on_slider_moved(gtkwidget * widget, GtkAdjustment *adj) { int scale_value; } scale_value = adj->value; 4 1. sample4.c sample4.c load_pgm() 9 lena.pgm 2. entry 9 9 4 3.5 T T 1 0 (binarization).

3.6 15 x x f y = f(x) [x m in, x m ax] 10 x max x y = y max x min x < x max y = y max y min (x x min ) + y min x max x min x < x min y = y min ymax ymin xmin xmax 10 3.6 3 3 ( ) 3 3 5 5 ( ) 3 3 f(i, j) g(i, j) (i, j) g(i, j) = 1 9 1 1 m= 1 n= 1 f(i + m, j + n) 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9

16 3 Sobel 1 0 1 1 0 1 1 0 1 1 1 0 1 2 0 2 1 0 1 Sobel 1 1 ( 11) 3 3 f(i, j) 2 2 f(i, j) {f(i + 1, j) f(i, j)} {f(i, j) f(i 1, j)} i2 2 f(i, j) {f(i, j + 1) f(i, j)} {f(i, j) f(i, j 1)} j2 2 2 f(i, j) + f(i, j) i2 j2 3 3

17 11 (A),(B) ( ) (B) ( ) 2 5 1. sample5.c scale 12 2. sample5.c image_filter() 3 3 13 ( ) 3. Sobel ( ) 4. ( ) 12 5.1 13 5.2 4 (/dev/video) mmap videocapture.c GUI

18 4 6 1. gtk capture videocapture gui.c 14 2. 14 6 4.1 OpenCV OpenCV OpenCV 2 binarization()

4.1 OpenCV 19 // 2 void binarization(void){ // BGR cvcvtcolor( sourceimage, grayimage, CV_BGR2GRAY ); // 2 cvthreshold( grayimage, binaryimage, levels, THRESHOLD_MAX_VALUE, CV_THRESH_BINARY ); } // cvshowimage( windownamebinarization, binaryimage); // void on_change( int pos ){ binarization(); } GTK (GTK scale ) char windownamebinarization[] = "Binarization" // int levels = 128; // (2 ) char trackbarnamethreshold[] = "Threshold"; // // cvnamedwindow( windownamebinarization ); // cvcreatetrackbar( trackbarnamethreshold, windownamebinarization, &levels, TRACKBAR_MAX_VALUE, on_change ); // cvdestroywindow( windownamebinarization );

20 4 7 1. binarization opencv OpenCV ( )