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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

270閲覧

同クラス間での 値の同期、共有

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/12/21 07:15

編集2022/01/12 10:55

私はandroidstudioでアプリを作ろうとしています。
現状はopencvを使って赤い領域を見つけその中心点を求めるところまでできています。

#問題
synchronized(sync) {}の中に入っている値(line)を同期させてテキストに表示させたいのですが同期できていなくて初期値のline=0のまま表示されてしまいます。どこが間違っているのでしょうか?

java

1package com.example.XXX.XXX; 2 3import android.app.Activity; 4import android.os.AsyncTask; 5import android.os.Bundle; 6import android.util.Log; 7import android.view.MenuItem; 8import android.view.SurfaceView; 9import android.view.WindowManager; 10import android.widget.TextView; 11 12import org.opencv.android.BaseLoaderCallback; 13import org.opencv.android.CameraBridgeViewBase; 14import org.opencv.android.LoaderCallbackInterface; 15import org.opencv.android.OpenCVLoader; 16import org.opencv.core.Core; 17import org.opencv.core.CvType; 18import org.opencv.core.Mat; 19import org.opencv.core.MatOfPoint; 20import org.opencv.core.MatOfPoint2f; 21import org.opencv.core.Point; 22import org.opencv.core.RotatedRect; 23import org.opencv.core.Scalar; 24import org.opencv.core.Size; 25import org.opencv.imgproc.Imgproc; 26 27 28import java.util.ArrayList; 29import java.util.List; 30 31 32 33public class MainActivity extends Activity implements CameraBridgeViewBase.CvCameraViewListener { 34 private static final String TAG = "OCVSample::Activity"; 35 36 int i =0; 37 String x="0"; 38 String y="0"; 39 40 String line = "0"; 41 private Object sync = new Object(); 42 43 44 45 private CameraBridgeViewBase mOpenCvCameraView; 46 private boolean mIsJavaCamera = true; 47 private MenuItem mItemSwitchCamera = null; 48 49 50 private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { 51 @Override 52 public void onManagerConnected(int status) { 53 switch (status) { 54 // 読み込みが成功したらカメラプレビューを開始 55 case LoaderCallbackInterface.SUCCESS: 56 { 57 Log.i(TAG, "OpenCV loaded successfully"); 58 mOpenCvCameraView.enableView(); 59 } break; 60 default: { 61 super.onManagerConnected(status); 62 }break; 63 } 64 } 65 }; 66 67 public MainActivity() { 68 Log.i(TAG, "Instantiated new " + this.getClass()); 69 } 70 71 @Override 72 protected void onCreate(Bundle savedInstanceState) { 73 Log.i(TAG, "called onCreate"); 74 super.onCreate(savedInstanceState); 75 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 76 setContentView(R.layout.activity_main); 77 78 mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.camera_view); 79 80 mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); 81 TextView textview = findViewById(R.id.text_view); 82 synchronized(sync) { 83 textview.setText(line); 84 } 85 //textview.setText("a"); 86 87 mOpenCvCameraView.setCvCameraViewListener(this); 88 } 89 90 @Override 91 protected void onPause() { 92 super.onPause(); 93 if (mOpenCvCameraView != null) 94 mOpenCvCameraView.disableView(); 95 } 96 97 @Override 98 protected void onResume() { 99 super.onResume(); 100 if (!OpenCVLoader.initDebug()) { 101 Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization"); 102 OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); 103 } else { 104 Log.d(TAG, "OpenCV library found inside package. Using it!"); 105 mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); 106 } 107 } 108 109 110 @Override 111 protected void onDestroy() { 112 super.onDestroy(); 113 if (mOpenCvCameraView != null) 114 mOpenCvCameraView.disableView(); 115 } 116 117 118 @Override 119 public void onCameraViewStarted(int width, int height) {// カメラプレビュー開始時に呼ばれる 120 } 121 122 @Override 123 public void onCameraViewStopped() {// カメラプレビュー終了時に呼ばれる 124 } 125 126 @Override 127 public Mat onCameraFrame(Mat inputFrame) { 128 Mat src = inputFrame; 129 130 return src; 131 } 132 133 public Mat centerpoint (Mat src) { 134 135 Mat src1 = src.clone(); 136 Imgproc.cvtColor(src, src, Imgproc.COLOR_RGB2HSV);//HSVに変換 137 Imgproc.medianBlur(src, src, 5); 138 Core.inRange(src, new Scalar(150, 100, 100), new Scalar(180, 255, 255), src); 139 Mat hierarchy = Mat.zeros(new Size(5, 5), CvType.CV_8UC1); 140 List<MatOfPoint> contours = new ArrayList<MatOfPoint>(); 141 Imgproc.findContours(src, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_TC89_L1); 142 143 int index = -1; 144 double area = 0; 145 for (i = 0; i < contours.size(); i++) { 146 double tmp = Imgproc.contourArea(contours.get(i)); 147 if (area < tmp) { 148 area = tmp; 149 index = i; 150 } 151 } 152 if (index != -1) { 153 MatOfPoint ptmat = contours.get(index); 154 Scalar color = new Scalar(0, 200, 0); 155 MatOfPoint2f ptmat2 = new MatOfPoint2f(ptmat.toArray()); 156 RotatedRect bbox = Imgproc.minAreaRect(ptmat2); 157 Point point = bbox.center; 158 Imgproc.circle(src1, bbox.center, 5, color, -1); 159 x = String.valueOf(point.x); 160 y = String.valueOf(point.y); 161 synchronized(sync) { 162 line = x; 163 } 164 } 165 return src1; 166 } 167}

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問