質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

359閲覧

カメラがキャプチャしなくなりました

MGN6

総合スコア13

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2019/06/03 07:51

編集2019/06/04 00:11

Javaでカメラの映像を画像として保存するスピード変更するプログラムを書いていますが, ボタンを増やしてからカメラのキャプチャがしなくなりました. 原因のわかる方は教えてください.

Java

1import java.awt.EventQueue; 2 3import javax.swing.JFrame; 4import javax.swing.JPanel; 5import javax.swing.border.EmptyBorder; 6 7import org.opencv.core.Core; 8import org.opencv.core.Mat; 9import org.opencv.core.MatOfRect; 10import org.opencv.core.Point; 11import org.opencv.core.Rect; 12import org.opencv.core.Scalar; 13import org.opencv.core.Size; 14import org.opencv.imgcodecs.Imgcodecs; 15import org.opencv.imgproc.Imgproc; 16import org.opencv.objdetect.CascadeClassifier; 17import org.opencv.videoio.VideoCapture; 18 19import java.awt.Color; 20 21import javax.swing.border.LineBorder; 22import javax.swing.JButton; 23import java.awt.event.ActionListener; 24import java.awt.event.ActionEvent; 25 26public class camF2 extends JFrame implements Runnable { 27 private static final long serialVersionUID = 1L; 28 private ImagePanel p_cam; 29 private ImagePanel p_dst; 30 private Thread t; 31 private VideoCapture capture; 32 private JButton btnCapture; 33 private boolean t_mk=false; // キャプチャ用(thread) 34 private boolean s_mk1=false; // 保存用 35 private boolean s_mk2=false; // 保存用 36 private boolean s_mk3=false; // 保存用 37 private boolean s_mk0=false; // 保存用 38 private int s_cnt = 0; // 自動撮影間隔用 39 private int f_cnt = 0; 40 41 /** 42 * Launch the application. 43 */ 44 public static void main(String[] args) { 45 // Load the native library. 46 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 47 48 EventQueue.invokeLater(new Runnable() { 49 public void run() { 50 try { 51 camF2 frame = new camF2(); 52 frame.setVisible(true); 53 } catch (Exception e) { 54 e.printStackTrace(); 55 } 56 } 57 }); 58 } 59 60 public camF2() { 61 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 62 setBounds(100, 100, 702, 524); 63 64 JPanel contentPane = new JPanel(); 65 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 66 setContentPane(contentPane); 67 contentPane.setLayout(null); 68 69 p_cam = new ImagePanel(); 70 p_cam.setBorder(new LineBorder(new Color(0, 0, 0))); 71 p_cam.setBounds(12, 10, 523, 467); 72 contentPane.add(p_cam); 73 74 p_dst = new ImagePanel(); 75 p_dst.setBounds(547, 382, 104, 95); 76 contentPane.add(p_dst); 77 p_dst.setBorder(new LineBorder(new Color(0, 0, 0))); 78 79 btnCapture = new JButton("キャプチャ開始"); 80 btnCapture.addActionListener(new ActionListener() { 81 public void actionPerformed(ActionEvent e) { 82 if(t_mk==true) { 83 t_mk=false; 84 btnCapture.setText("キャプチャ開始"); 85 }else { 86 t_mk=true; 87 btnCapture.setText("キャプチャ停止"); 88 } 89 } 90 }); 91 btnCapture.setBounds(547, 10, 127, 37); 92 contentPane.add(btnCapture); 93 94 // Save1 95 JButton btnSave1 = new JButton("自動保存(遅い)"); 96 btnSave1.addActionListener(new ActionListener() { 97 public void actionPerformed(ActionEvent e) { 98 if(s_mk1) { 99 s_mk1=false; 100 s_mk0=true; 101 } 102 } 103 }); 104 btnSave1.setBounds(547, 57, 127, 37); 105 contentPane.add(btnSave1); 106 107 // Save2 108 JButton btnSave2 = new JButton("自動保存(普通)"); 109 btnSave2.addActionListener(new ActionListener() { 110 public void actionPerformed(ActionEvent e) { 111 if(s_mk2) { 112 s_mk2=false; 113 s_mk0=true; 114 } 115 } 116 }); 117 btnSave2.setBounds(547, 104, 127, 37); 118 contentPane.add(btnSave2); 119 120 // Save3 121 JButton btnSave3 = new JButton("自動保存(早い)"); 122 btnSave3.addActionListener(new ActionListener() { 123 public void actionPerformed(ActionEvent e) { 124 if(s_mk3) { 125 s_mk3=false; 126 s_mk0=true; 127 } 128 } 129 }); 130 btnSave3.setBounds(547, 151, 127, 37); 131 contentPane.add(btnSave3); 132 133 // Stop 134 JButton btnStop = new JButton("保存停止"); 135 btnStop.addActionListener(new ActionListener() { 136 public void actionPerformed(ActionEvent e) { 137 if(s_mk0) { 138 s_mk0=false; 139 s_mk1=true; 140 s_mk2=true; 141 s_mk3=true; 142 } 143 } 144 }); 145 btnStop.setBounds(547, 198, 127, 37); 146 contentPane.add(btnStop); 147 148 capture =new VideoCapture(0); 149 150 t = new Thread(this); 151 t.start(); 152 } 153 154 public void run() { 155 156 Mat image=new Mat(); // OpenCV用 イメージデータ 157 158 if( capture.isOpened() ){ 159 while( true ){ 160 //System.out.print("*"); 161 if(t_mk) { 162 capture.read(image); // キャプチャ(カメラからイメージ取得)->image 163 if( !image.empty() ){ // イメージ取得OK 164 Imgproc.resize(image, image, new Size(image.size().width,image.size().height)); // リサイズ 165 166 Mat gray = new Mat(); // グレースケール(白黒階調)変換用 167 Imgproc.cvtColor(image, gray, Imgproc.COLOR_BGRA2GRAY); // カラー -> グレー 168 //Core.normalize(gray, gray, 0, 255, Core.NORM_MINMAX); // 均一化 169 170 // カスケード分類器で顔探索 171 CascadeClassifier faceDetector = // 見つける人へパラメータを渡す 172 new CascadeClassifier("D:/eclipse-workspace/OpenCV/data/haarcascades/haarcascade_frontalface_default.xml"); 173 MatOfRect faceDetections = new MatOfRect(); // 見つかった領域(Rect)を保存するデータ 174 faceDetector.detectMultiScale(image, faceDetections); // やる 175 176 System.out.println(faceDetections.toArray().length); // 何個あったか表示 177 // 見つかった顔を矩形で囲む 178 for (Rect rect : faceDetections.toArray()) { // 領域の集まり -> 1つずつ(rect) 179 Imgproc.rectangle(image, new Point(rect.x, rect.y), 180 new Point(rect.x + rect.width, rect.y + rect.height), 181 new Scalar(0, 255, 0), 3); 182 } 183 p_cam.setimage(image); 184 p_cam.repaint(); 185 //p_dst.setimage(gray); 186 //p_dst.repaint(); 187 188 if( (s_mk1 | s_mk2 | s_mk3) == true) { 189 //s_mk = false; 190 if(++s_cnt>=5) { 191 s_cnt = 0; 192 Imgcodecs.imwrite("D:/eclipse-workspace/test"+f_cnt+".jpg",image); 193 if(++f_cnt>=10) f_cnt=0; 194 } 195 } 196 // 1000ms / 50ms = 20 197 } else { 198 System.out.println(" --(!) No captured frame -- "); 199 } 200 } else { 201 try { 202 if(s_mk1==true) { 203 Thread.sleep(1000); 204 } 205 if(s_mk2==true) { 206 Thread.sleep(500); 207 } 208 if(s_mk3==true) { 209 Thread.sleep(250); 210 } 211 212 213 } catch(Exception e) {} 214 } 215 } 216 } 217 } 218} 219

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問