// // カメラサンプル // camera_sample.imw3 // // カメラからの画像を加工する // TIMER { CopyBMP(cam,0,0,CAMERA_W,CAMERA_H, fin,0,0,CAMERA_W,CAMERA_H,0) ; // カメラ画面を完成画面へコピー // 完成画面をモザイク化 縮小してから拡大 if(moz == 1){ CopyBMP(fin,0,0,CAMERA_W,CAMERA_H, fin,0,0,CAMERA_W/16,CAMERA_H/16,0) ; CopyBMP(fin,0,0,CAMERA_W/16,CAMERA_H/16, fin,0,0,CAMERA_W,CAMERA_H,0) ; } if(binari == 1){ BinariBMPColor(fin,0,0,CAMERA_W,CAMERA_H,binari_d,binari_d,binari_d) ; // 完成画面を2値化 } if(mono == 1){ GrayBMPColor(fin,0,0,CAMERA_W,CAMERA_H,0) ; // 完成画面をモノクロ化 } if(bright == 1){ ShiftBMPColor(fin,0,0,CAMERA_W,CAMERA_H,fin,0,0,bright_d) ; // 完成画面を明暗調整 } if(out == 1){ CopyBMP(fin,0,0,CAMERA_W,CAMERA_H, sub,0,0,CAMERA_W,CAMERA_H,0) ; // 完成画面をサブ画面へコピー CopyBMP(sub,0,0,CAMERA_W,CAMERA_H, sub,1,0,CAMERA_W,CAMERA_H,4) ; // サブ画面を輪郭化(横) CopyBMP(fin,0,0,CAMERA_W,CAMERA_H, fin,0,1,CAMERA_W,CAMERA_H,4) ; // 完成画面を輪郭化(縦) CopyBMP(sub,0,0,CAMERA_W,CAMERA_H, fin,0,0,CAMERA_W,CAMERA_H,2) ; // サブ画面を完成画面に合成 } if(filter == 1){ SetPal(10,filter_r,filter_g,filter_b) ; FullPaint(sub,10) ; // サブ画面を指定色で塗りつぶす CopyBMP(sub,0,0,CAMERA_W,CAMERA_H, fin,0,0,CAMERA_W,CAMERA_H,2) ; // サブ画面を完成画面に合成 } // 完成画面をモニター画面へコピー CopyBMP(fin,x1,y1,w1,h1, 0,120,4,CAMERA_W*r_l,CAMERA_H*t_b,rev) ; } INIT { cam_open = 0 ; // カメラ接続 big = 0 ; x1 = 0 ; y1 = 0 ; w1 = CAMERA_W ; h1 = CAMERA_H ; // 拡大 r_l = 1 ; // 左右反転 t_b = 1 ; // 上下反転 rev = 0 ; // 色反転 filter = 0 ; filter_r = 0 ; filter_g = 0 ; filter_b = 250 ; // フィルター色 SetScrollRange("ID_filter_r",255) ; SetScrollPos("ID_filter_r",filter_r) ; SetScrollRange("ID_filter_g",255) ; SetScrollPos("ID_filter_g",filter_g) ; SetScrollRange("ID_filter_b",255) ; SetScrollPos("ID_filter_b",filter_b) ; bright = 0 ; bright_d = 100 ; // 明暗 SetScrollRange("ID_bright_d",150) ; SetScrollPos("ID_bright_d",bright_d-50) ; binari = 0 ; binari_d = 127 ; // 2値化 SetScrollRange("ID_binari_d",255) ; SetScrollPos("ID_binari_d",binari_d) ; mono = 0 ; // モノクロ out = 0 ; // 輪郭 moz = 0 ; // モザイク } CREATE { SetWinSize(800,550) ; SetWinColor(15) ; x = 8 ; y = 8 ; CreateControl(0,"カメラ ON/OFF","ID_open_cam",x,y,100,30) ; y = y + 34 ; CreateControl(20,"拡大","ID_big",x,y,100,24) ; y = y + 24 ; CreateControl(20,"左右反転","ID_r_l",x,y,100,24) ; y = y + 24 ; CreateControl(20,"上下反転","ID_t_b",x,y,100,24) ; y = y + 24 ; CreateControl(20,"色反転","ID_rev",x,y,100,24) ; y = y + 30 ; CreateControl(20,"フィルター","ID_filter",x,y,100,20) ; y = y + 22 ; CreateControl(70,"","ID_filter_r",x,y,100,18) ; y = y + 20 ; CreateControl(70,"","ID_filter_g",x,y,100,18) ; y = y + 20 ; CreateControl(70,"","ID_filter_b",x,y,100,18) ; y = y + 24 ; CreateControl(20,"明暗","ID_bright",x,y,100,20) ; y = y + 22 ; CreateControl(70,"","ID_bright_d",x,y,100,18) ; y = y + 24 ; CreateControl(10+10,"二値化","ID_binari",x,y,100,20) ; y = y + 22 ; CreateControl(70,"","ID_binari_d",x,y,100,18) ; y = y + 24 ; CreateControl(10+10,"モノクロ","ID_mono",x,y,100,24) ; y = y + 24 ; CreateControl(10+10,"輪郭","ID_out",x,y,100,24) ; y = y + 24 ; CreateControl(10+10,"モザイク","ID_moz",x,y,100,24) ; y = y + 24 ; fin = 1 ; cam = 2 ; sub = 3 ; SubScreen(fin,SCR_W,SCR_H) ; // 完成画面 SubScreen(cam,SCR_W,SCR_H) ; // カメラ取得画像 SubScreen(sub,SCR_W,SCR_H) ; SetTimer(100) ; } // カメラ ON/OFF ID_open_cam { if(cam_open == 0){ if(OpenCamera(0,0,0,400,300,cam) == 1){ cam_open = 1 ; return ; } } CloseCamera(0) ; cam_open = 0 ; } // 拡大 ID_big { big = (big + 1) % 2 ; SetButtonCheck("ID_big",big) ; if(big == 1){ x1 = CAMERA_W / 4 ; y1 = CAMERA_H / 4 ; w1 = CAMERA_W / 2 ; h1 = CAMERA_H / 2 ; } if(big == 0){ x1 = 0 ; y1 = 0 ; w1 = CAMERA_W ; h1 = CAMERA_H ; } } // 左右反転 ID_r_l { if(r_l == 1){ SetButtonCheck("ID_r_l",1) ; r_l = -1 ; return ; } if(r_l == -1){ SetButtonCheck("ID_r_l",0) ; r_l = 1 ; return ; } } // 上下反転 ID_t_b { if(t_b == 1){ SetButtonCheck("ID_t_b",1) ; t_b = -1 ; return ; } if(t_b == -1){ SetButtonCheck("ID_t_b",0) ; t_b = 1 ; return ; } } // 色反転 ID_rev { rev = (rev + 1) % 2 ; SetButtonCheck("ID_rev",rev) ; } // フィルター ID_filter { filter = (filter + 1) % 2 ; SetButtonCheck("ID_filter",filter) ; } ID_filter_r { filter_r = GetScrollPos("ID_filter_r") ; } ID_filter_g { filter_g = GetScrollPos("ID_filter_g") ; } ID_filter_b { filter_b = GetScrollPos("ID_filter_b") ; } // 明暗 ID_bright { bright = (bright + 1) % 2 ; SetButtonCheck("ID_bright",bright) ; } ID_bright_d { bright_d = GetScrollPos("ID_bright_d") + 50 ; } // 二値化 ID_binari { binari = (binari + 1) % 2 ; SetButtonCheck("ID_binari",binari) ; } ID_binari_d { binari_d = GetScrollPos("ID_binari_d") ; } // モノクロ ID_mono { mono = (mono + 1) % 2 ; SetButtonCheck("ID_mono",mono) ; } // 輪郭 ID_out { out = (out + 1) % 2 ; SetButtonCheck("ID_out",out) ; } // モザイク ID_moz { moz = (moz + 1) % 2 ; SetButtonCheck("ID_moz",moz) ; }