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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

Photoshop

Photoshopとは、アドビシステムズ(株)が開発した画像編集のソフトウェアです。 イラストレーターや印刷業界などで幅広く使われている他、初心者や一般向けの写真編集用に開発されたソフトもあります。 専用に開発されたフィルターやプラグインを追加すると、機能を拡張することができます。

Q&A

解決済

1回答

3992閲覧

画像ファイル(グレースケール)を配列に読み込み処理し、戻したい(ウィンドウズ7環境でシンプルに)

nogusa

総合スコア11

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

Photoshop

Photoshopとは、アドビシステムズ(株)が開発した画像編集のソフトウェアです。 イラストレーターや印刷業界などで幅広く使われている他、初心者や一般向けの写真編集用に開発されたソフトもあります。 専用に開発されたフィルターやプラグインを追加すると、機能を拡張することができます。

0グッド

2クリップ

投稿2015/06/06 17:20

はじめまして、プログラマーではなくアート関係ですが、よろしくお願い致します。
グレースケール画像から輪郭抽出等を行って、最終的には2値画像の版を作って版画のような作品をつくることを試みています。Photoshopを使っているのですが、かゆい所に手が届かないため、自分で画像処理のプログラムを組みたいと思っています。
30年ほど前に、アセンブラやC、 pascal などで簡単な画像処理をやったことがあるので、画像が2次元配列(グレー画像なので、各配列要素が階調データ)に取り込むことができれば、自分の思うようなフィルタリング処理等のプログラムが組めそうに思っており、試してみたいと思います。 しかし、30年来プログラミングはやっておらず、現在のウインドウズ7などの環境で、どのようにしたらそのようなことができるのかイメージがつかめず、ご教示頂ければありがたいです。
やりたいことは、PC上にあるグレー画像ファイル(jpegですが、 TIFF 等適切なものに変換可能です。サイズは 3000 x 3000 画素 は扱いたいです)を2次元配列に格納して、C 等の言語で処理した後、PC 上に戻すことです。 ウィンドウズのプログラミング言語を調べたら Visual C# などがあるようですが、私のやりたいことのためには大仰な気がします。もちろん、ほかにシンプルな方法がなくて、それを使ってできるのであれば、それで構わないと思っていますので、できるのかどうかの情報だけでもありがたいです。 また、最近のプログラミング環境等まったくわかっていないので、わかりやすい解説本などがあると助かります。
以上、本サイトに適切な質問かどうか不安がありますが、よろしくご教示頂けると助かります。

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

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

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

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

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

guest

回答1

0

ベストアンサー

その用途なら、Python + OpenCV がいいでしょう。

  1. https://www.python.org/download/releases/2.7.7/ から Python 2.7 をインストールします。

◾Windows x86 MSI Installer (2.7.7) を選択してください。
OS が64bit でもx86 を選択してください。これは後述のnumpy が 64bit バイナリがないためです。
2. http://sourceforge.net/projects/numpy/files/NumPy/1.9.2/numpy-1.9.2-win32-superpack-python2.7.exe/download から numpy をインストールしてください。
3. http://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.0.0/opencv-3.0.0.exe/download から OpenCV 3.0.0 をインストールしてください。
実際にはインストールはされず、ただ展開されるだけです。
opencv\build\python\2.7\x86 から cv2.pyd を C:\Python27\Lib\site-packages へコピーしてください。

そして以下のファイルをtest.py として作成して、コマンドラインから >test.py と実行してください。
同じディレクトリにある before.png とファイルを読み込み、輪郭抽出して after.png という名前で
書き出されます。

import cv2

img = cv2.imread('before.png')
out = cv2.Canny(img, 50, 150)
cv2.imwrite('after.png', out)

投稿2015/06/10 15:30

katsumiy

総合スコア479

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

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

nogusa

2015/06/14 04:35

katsumiy さん  質問をした nogusa と申します。(質問時はゲストでしたが、今回登録しました)  まず、ご回答ありがとうございました。わかり易いご説明で、プログラマーではない  私でも、インストールし Python + OpenCV の環境が使えるようになりました。  OpenCV のライブラリの内容にも感動しました。大変ありがとうございます。   ただ、プログラムをいじるのは30年ぶりくらいだったもので、ここまでくるのに  時間がかかり、ご返事が遅くなってしまい申し訳ありませんでした。   なお、あつかましいですが、よろしければもう一つご教示お願いできないでしょうか?  質問は、Python で img = cv2.imread('before.png')  として  img オブジェクトに画像が取り込めたのですが、   この画像(たとえば 3000 x 3000 画素)であったとして、  その ある特定の画素 たとえば 縦 1000 横 1000 の 数値を  変数に取り込むにはどのように記述すればよいのでしょうか?  (オブジェクト言語でなければ 画像配列を pic(3000,3000) 、整数 n として    n = pic(1000, 1000) といった 記述に対応する記述はどのように   なるのでしょうか?)   オブジェクト言語は初めてで、取っ掛かりがわからないので  この一点だけ教えてもらえれば、後は何とかなると思います。   お手数ですが、よろしくお願いいたします。
katsumiy

2015/06/14 09:32

こんな風にやります。 ------------------------------ import cv2 img = cv2.imread('before.png') pixel = img[50, 100] print "blue", pixel[0] print "green", pixel[1] print "red", pixel[2] # set green channel to 0 pixel[1] = 0 img[50, 100] = pixel cv2.imwrite('after.png', img) ---------------------------- img[y, x] の2次元配列の中に、3 or 4(alpha channel付) の一次元配列の ピクセルのデーターがあるという感じです。 詳細は、以下のweb page で勉強しましょう。 http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_core/py_basic_ops/py_basic_ops.html
nogusa

2015/06/17 10:58

katsumiy さん  質問をした nogusa です。詳しいご丁寧な回答を頂きありがとうございました。  これで、画像を自分の思ったように加工できるようになると確信できました。  あとは、頂いた参照ページ等で勉強して実際のプログラムを作りたいと思います。   質問時にも書きましたように、当方、撮影した写真を輪郭抽出などによって  変形(特徴抽出+シンプル化)し、ガラスに彫刻するアート作品作りを検討しています。彫刻用の版は 2値化された画像で photoshop や illustrator で試しているの ですが、思ったようにいかないため、カスタマイズした変換フィルターを作りたいと 思って質問した次第です。 そのようなフィルターを使って旨く 版作りができるか どうかはやってみないとわかりませんが、今回ご教示頂いたことで、あらたな、強力な 自分のツールができるような気がします。 このツールを使って作品ができるように なった時は、何かの機会で作品を見て頂ければありがたいと思います。   (これで質問は解決したのですが、ゲストの時にした質問なので、どのようにして  解決済みの登録をするのかわからず、現在問い合わせています)    
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問