Javaのプログラムで, OpenCVを用いて異物検出をしたいのですが, うまく動作しません。具体的には, カメラに異物が映っている間, 異物を矩形で囲むという動作です。下にソースコードの画像処理に該当する部分を示します。
Java
1public void run(){ 2 3 if( capture.isOpened() ){ 4 capture.read(img_fg); 5 while( true ){ 6 capture.read(img_bg); 7 8 if( !img_bg.empty() ){ 9 10 // グレースケール化 11 Imgproc.cvtColor(img_fg, gray_fg, Imgproc.COLOR_BGRA2GRAY); 12 Imgproc.cvtColor(img_bg, gray_bg, Imgproc.COLOR_BGRA2GRAY); 13 14 Core.absdiff(gray_fg, gray_bg, img_df); // 差分 15 Imgproc.threshold(img_df, img_bi, 100, 255, Imgproc.THRESH_BINARY); // 差分の二値化 16 17 Core.bitwise_and(img_fg, img_bi, img_mot); // 対象の切り出し 18 19 // 輪郭検出 20 Imgproc.findContours(img_mot, contours, hierarchy, 21 Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_TC89_L1); 22 23 Imgproc.drawContours(img_bg, contours, -1, new Scalar(0, 0, 255), 1); 24 25 p_cam.setimage(img_bg); 26 p_cam.repaint();
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/26 00:06 編集
2019/11/26 01:07
2019/11/28 00:02
2019/11/28 01:44