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

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

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

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

OpenCV

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

4619閲覧

opencvでのノイズ除去

yamata

総合スコア36

C

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

OpenCV

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/11/01 07:57

編集2016/11/04 06:45

opencvでノイズの除去を行いたいです。

そこで、bilateralFilterの関数を用いようと考えたのですが、
この関数はMat型にしか対応していないのでしょうか?
IplImage型の画像を入れても処理されないのですが、、、
よろしくお願いします。

opencv2.4.9を使用しています。

みなさんありがとうございます。
matに変更していきたいと思います。

ノイズ除去の前に画像の連番読み込みを行いたいと考えているのですが、
以下のプログラムのto_string()の部分で、
オーバーフロードされた関数"to_string"の複数のインスタンスが引数リストと一致します
というエラーが出ます。
こちらの解決法を教えていただけないでしょうか?

using namespace std; using namespace cv; int main(int argc,char** argv) { for(int i=1;i<=10;i++) { string filename_i="C:\\opencv_ICImage\\2016-11-1 黒ネジ10本\\Image"+to_string(static_cast<double>(i))+".bmp"; Mat src = imread(filename_i,IMREAD_UNCHANGED); resize(src,src,Size(),0.2,0.2); imshow("src",src); string filename_o="C:\\opencv_ICImage\\ノイズ除去 練習\\Image"+to_string(static_cast<double>(i))+".bmp"; imwrite(filename_o, src); cout << filename_o << "" << filename_i << endl; waitKey(100); } }

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

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

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

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

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

yohhoy

2016/11/01 13:52

OpenCVのバージョンを明示ください。
guest

回答2

0

OpenCV 2.x系ならばIplImage*からcv::Mat直接構築できますから、下記のような書き方でOKのはずです。

C++

1IplImage* img = //... 2cv::bilateralFilter(cv::Mat(img), /*省略*/);

過去資産のメンテナスではなく新規にOpenCVを使ったコードを書くならば、IplImage型を一切使わないことを強くすすめます。IplImageはOpenCV 1.x時代のC言語向けインタフェースです。OpenCV 2.x〜3.x系ではC++言語向けのcv::Matを積極的に利用すべきです。

投稿2016/11/02 14:10

yohhoy

総合スコア6191

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

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

MasahikoHirata

2016/11/02 14:12

「cv::Matを積極的に利用すべきです。」 yohhoyさんに同感。
guest

0

ベストアンサー

単純にMat型と相互変換で使用されたら?

ipimageをMatには、

cv::Mat mat(iplImage);

Matをiplimageには、

IplImage iplImage = mat;

投稿2016/11/01 08:06

MasahikoHirata

総合スコア3747

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

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

yamata

2016/11/01 08:16

ありがとうございます。 やはり、その方法しかないのでしょうか。 また、プログラム //------------------------原画像読み込み------------------------------- std::stringstream filename; filename << "C:\\opencv_ICImage\\2016-11-1 黒ネジ10本\\Image" << std::setfill('0') << std::setw(4) << number << ".bmp"; //std::cout << "filename=" << filename.str() << std::endl;// IplImage* img=cvLoadImage(filename.str().c_str()); //IplImage * scale_img= cvLoadImage("原画像.bmp",CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); //-------------------------------------------------------------------------- //変換画像用IplImage scale_img=cvCreateImage(cvSize((int)(img->width*SCALE_X), (int)(img->height*SCALE_Y)), IPL_DEPTH_8U, 3); //変換 cvResize(img, scale_img, CV_INTER_LINEAR); 以上の部分をmatにするには、どのようにしたらよいのでしょうか?
MasahikoHirata

2016/11/01 08:19

opencvのバージョンはいくつですか? opencv3.xであれば回りくどい変換とか楽になると思うのですが。
MasahikoHirata
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問