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

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

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

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

Java

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

Android

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

Android Studio

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

Q&A

解決済

1回答

1285閲覧

Genymotionのギャラリーにある画像にアクセスする方法

chii09

総合スコア8

OpenCV

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

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2018/01/09 15:33

AndroidStudioにてカメラで写真を撮影した後、その画像に対して任意の文字を入力できるアプリを制作しています。

方法として

AndroidStudioで制作したカメラアプリを起動し撮影、画像データを取得。

その画像データを読み込みopencvを用いて画像に文字の挿入。

という手順で考えています。

現在、カメラで撮影したデータをGenymotion(エミュレーター)のギャラリー内に保存するところまでできました。

次はその保存したデータにアクセスし文字を入力したいのですが画像へどのようにアクセスすればいいのかわかりません。

ご教授願います。

AndroidStudio3.0.1
opencv3.2

カメラアプリのコード

import android.Manifest; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.os.Environment; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.FileProvider; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; public class MainActivity extends AppCompatActivity { private final static int RESULT_CAMERA = 1001; private final static int REQUEST_PERMISSION = 1002; private ImageView imageView; private Uri cameraUri; private String filePath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("debug","onCreate()"); setContentView(R.layout.activity_main); imageView = findViewById(R.id.image_view); Button cameraButton = findViewById(R.id.camera_button); cameraButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Android 6, API 23以上でパーミッシンの確認 if (Build.VERSION.SDK_INT >= 25) { checkPermission(); } else { cameraIntent(); } } }); } private void cameraIntent(){ Log.d("debug","cameraIntent()"); // 保存先のフォルダーを作成 File cameraFolder = new File( Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES),"IMG"); cameraFolder.mkdirs(); // 保存ファイル名 String fileName = new SimpleDateFormat( "date1", Locale.US).format(new Date()); filePath = String.format("%s/%s.jpg", cameraFolder.getPath(),fileName); Log.d("debug","filePath:"+filePath); // capture画像のファイルパス File cameraFile = new File(filePath); cameraUri = FileProvider.getUriForFile( MainActivity.this, getApplicationContext().getPackageName() + ".provider", cameraFile); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, cameraUri); startActivityForResult(intent, RESULT_CAMERA); Log.d("debug","startActivityForResult()"); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == RESULT_CAMERA) { if(cameraUri != null){ imageView.setImageURI(cameraUri); registerDatabase(filePath); } else{ Log.d("debug","cameraUri == null"); } } } // アンドロイドのデータベースへ登録する private void registerDatabase(String file) { ContentValues contentValues = new ContentValues(); ContentResolver contentResolver = MainActivity.this.getContentResolver(); contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); contentValues.put("_data", file); contentResolver.insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues); } // Runtime Permission check private void checkPermission(){ // 既に許可している if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){ cameraIntent(); } // 拒否していた場合 else{ requestPermission(); } } // 許可を求める private void requestPermission() { if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION); } else { Toast toast = Toast.makeText(this, "許可されないとアプリが実行できません", Toast.LENGTH_SHORT); toast.show(); ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,}, REQUEST_PERMISSION); } } // 結果の受け取り @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { Log.d("debug","onRequestPermissionsResult()"); if (requestCode == REQUEST_PERMISSION) { // 使用が許可された if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { cameraIntent(); } else { // それでも拒否された時の対応 Toast toast = Toast.makeText(this, "これ以上なにもできません", Toast.LENGTH_SHORT); toast.show(); } } } @Override protected void onStart() { super.onStart(); Log.d("debug","onStart()"); } @Override protected void onRestart() { super.onRestart(); Log.d("debug","onRestart()"); } @Override protected void onResume() { super.onResume(); Log.d("debug","onResume()"); } @Override protected void onPause() { super.onPause(); Log.d("debug","onPause()"); } @Override protected void onStop() { super.onStop(); Log.d("debug","onStop()"); } @Override protected void onDestroy() { super.onDestroy(); Log.d("debug","onDestroy()"); } }

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

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

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

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

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

guest

回答1

0

自己解決

投稿2018/01/13 09:35

chii09

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問