画像表示

基本はここから!
OpenCVで画像処理をするからには、処理結果の画像を表示できないと意味がありません。
基本でも重要な構造コードです。

※このコードだけはopencv.jpに見当たらなかったので、載せておきます。こちらのサイトを参考にしました。
------------------------------------------------------------------------------
#include "stdafx.h"

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"

int main (int argc, char **argv)
{
IplImage *img = cvLoadImage("ファイル名(拡張子付き)"); /* イメージの読み込み */

cvNamedWindow("ファイル名",1); /* ウィンドウ名の指定 */
cvShowImage("ファイル名",img); /* イメージの表示 */

cvWaitKey(0); /* キー入力待ち */

cvDestroyWindow("ファイル名"); /* ウィンドウの開放 */
cvReleaseImage(&img); /* イメージの開放 */

return 0;
}
------------------------------------------------------------------------------

このコードの該当する場所に「sepi1.jpg」のファイル名を入力すると(※事前にコードと同じフォルダに画像を入れておく必要があります)



このように結果が表示されます!

 

 

 

画素値の直接操作 サンプルコード

画像のRGBのデータを取得して、その色味を変換することができるコードです。
画像を赤くしたり一部分を違う色にしたりすることが可能です。



この画像を実行すると ↓



このように変換することができます。

 

 

 

平滑化 サンプルコード

cvSmooth
OpenCVに実装されているフィルタを読み込んで、画像を滑らかにすることができるコードです。
平滑化には ブラー、ガウシアン、メディアン、バイラテル の4つのフィルタの種類があります。



この画像を読み込み実行すると ↓




上→:ブラー、ガウシアン
下→:メディアン、バイラテル

このように変換することができます。

 

 

 

ニ値化(大津の手法) サンプルコード

cvThreshold
ニ値化は画像に対して一定の画素値の数値を定め、その数値よりも高いか低いかによって
画像の色を白か黒かの二色、ニ値に変換します。このコードがニ値化の機能です。



この画像を実行すると ↓



このように変換することができます。

 

 

 

クラスタリングによる減色処理 サンプルコード

cvKMeans2
画像を値ごとにクラスに分けることをクラスタリングといいます。
そしてその色ごとに単色分けを行ったものがこの減色処理です。



この画像に減色処理を行うと ↓



このように変換することができます。

 

 

 

拡大と縮小 サンプルコード

cvResize
OpenCVでは画像の大きさも変更することができます。
補間も一緒にすることができるので、便利です。



この画像へ実行すると ↓



このように縮小拡大された画像が表示されます。

 

 

 

画像の反転 サンプルコード

IpFlip
水平軸、垂直軸、両軸それぞれの方向に画像を反転させることができます。



この画像に実行すると ↓



→:水平軸反転、垂直軸反転、両軸反転

このように変換されます

 

 

 

画像連結 サンプルコード

cvSetImageROI、cvResetImageROI
複数の画像を繋いで一つの画像にすることができる機能です。

※このコードは自分では画像の表示ができなかったために完成させられませんでしたが
他のコードと組み合わせれば、例えば2つの画像の高さを合わせて連結させるといった画像変換ができるのではないかと思いました。


(opencv.jpより)

実行できれば、このように画像を連結できます。