A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
透視変換とは 変換前後の4点を指定し 画像を変換することです。画像の回転が3点を指定して変換するのに対し4点になるわけです。 OpenCvでは次の手順で行います。 1)変換前後の座標をもとにgetPerspectiveTransformで変換行列を求める。 public static Mat getPerspectiveTransform(Mat src, Mat dst) src : 変換前の4点を示す マトリックス CvType.CV_32F dst : 変換後の4点を示す マトリックス CvType.CV_32F src_mat およびdst_matのCv_TypeはCV_32F以外はエラーになります。 2)変換行列用いて warpPerspective で画像を変換する。 static void warpPerspective(Mat src, Mat dst, Mat M
A simple to use opensource C++ / Java / AS3 library (with examples) for openFrameworks, Cinder, Processing and Flash, for solving and displaying real-time 2D cell-based fluid simulations based on Navier-Stokes equations. The library provides a very simple to use API with many convenience methods for adding and getting forces and colors at any position. This ease of use has made the library incredi
今回は、透明画像の対応について説明します。 今回、使用する透明画像はこのボール(png形式)になります。 背景画像には、このかわいい猫ちゃんを使います。 前回のプログラムのままでは透明画像に対応していないため、ボールの周りが黒色になってしまいます。 これは、ImageDataをそのまま描画するputImageDataメソッドでは透過されない仕様のためです。 ※前回のプログラムでは、透明度を255(不透明)固定してセットしていますが、255以下にしても透過されません。 Javascript における imageData のアルファ(透明度)について - Yahoo!知恵袋 の回答によると imageData.data[i+3] = 50; // 青い四角形のアルファを下げる これ↑の解釈なんですが・・・ そのアルファは、イメージの透過率ではなくて、Canvas自体の透過率みたいです。 ためし
東です。 諸般の事情で、手元にある大量の画像をマスク処理するという事案が発生しました。 簡単に図で説明するとこんな感じです。 PhotoShopとかその手のソフトでやればできるんでしょうが、 ・PhotoShop持ってないし。 ・PhotoShop以外でよさげなソフトってどれ? ・1,000枚とか2,000枚とかの画像を手動で処理したくないし。 そういうわけで開発することにしました。OpenCV触りたかったし。 お題 素材画像(カラー)、マスク画像(グレースケール)を与えると、素材画像のうちマスク画像の黒色の部分が透過した画像を出力せよ。 ただし、素材画像の大きさは統一されていない。 ただし、素材画像の大きさがマスク画像の大きさを超えることはない。 どうやるの? OpenCV CookBookのこのあたりにアルファチャンネル付PNG(=透過PNG)の取り扱い方が書かれていま
はじめに OpenCVで画像上に別の画像を重ねる方法を紹介します。 OpenCV.jpでは複数の画像を連結する方法が紹介されていますが、一つの画像の上に別の画像を重ねる方法(PiP:ピクチャ・イン・ピクチャ)は無いようです。 また、Stack OverflowではROI手法が紹介されていますが、領域サイズを間違えるとエラーになることや、元画像を変形して重ね合わせることができないなど、取り回しが悪いように思います。 そこで、本稿ではcv::warpAffineを使います。 行列を理解する手間がありますが、画像の変形に対応していることと、背景画像の外に描画してもエラーにならないなどの利点があります。 サンプルコード アフィン変換 「アフィン変換」は画像を拡縮、回転、剪断、平行移動する処理です。 詳しくはOpenCV.jpのcv::warpAffineを参照してください。 アフィン行列 アフィン
説明 Kanade-Lucas-Tomasi Feature Tracker をOpenCVで扱うための第一段階。 カメラからの入力画像に特徴点を描画して表示するのみ。 スクリーンショット ref KLT: An Implementation of the Kanade-Lucas-Tomasi Feature Tracker 上記のページで公開されているKLTのソースが必要。 main.cpp // KLT include #include "pnmio.h" #include "klt.h" // OpenCV include #include <cv.h> #include <highgui.h> // OpenCV libs #pragma comment(lib,"cxcore.lib") #pragma comment(lib,"cv.lib") #pragma comment
OpenCV、機械学習、はやりのDeep learningの環境構築の方法、サンプルの動かし方、APIの使い方、Tipsなどをすぐに忘れてしまうので、備忘録として記録している。記憶がなくなるスピードが、早いのでメモしておかないと再現できなくなる確率が高まっている。 最近、再度HDDを飛ばしてしまい、過去の自分のページに再度助けられた。 また、DNNモジュールを触る機会が増えているので、C++からPyhonへと鞍替え中。 内容を気にいっていただければ、twitterで紹介願います。 Sobelなどでx方向、y方向のエッジ強度を求めたあと cv::Matの形式のままだと cv::cartToPolar(matX, matY, magnitude, angle, true); を使用すれば一度に変換することができる。 補足: cv::cartToPolarの入力データの形式は、短精度か倍精度の浮
OpenCV、機械学習、はやりのDeep learningの環境構築の方法、サンプルの動かし方、APIの使い方、Tipsなどをすぐに忘れてしまうので、備忘録として記録している。記憶がなくなるスピードが、早いのでメモしておかないと再現できなくなる確率が高まっている。 最近、再度HDDを飛ばしてしまい、過去の自分のページに再度助けられた。 また、DNNモジュールを触る機会が増えているので、C++からPyhonへと鞍替え中。 内容を気にいっていただければ、twitterで紹介願います。 OpenCV2.4.3でLucas-Kanade法がサポートされているので試してみた calcOpticalFlowPyrLKは、指定した特徴点集合に対してのみオプティカルフローを計算する仕様なので、事前に GoodFeaturesToTrackDetectorを用いて、特徴点集合を求めておく 特徴点集合は、以前
調子がすぐれないが,あまり寝込んでもいられないので. 長いので追記に詳細を書きたいと思います. ここでやりたいことを大雑把に言うと, 「Webカメラで取ってきた映像の中で同じ点を連続で追跡したい」 ということで,その目標を解決するために, OpenCVによるキャプチャ KLT Trackerによる特徴点追跡 を実現します. on Win32 using VC++ あくまで自分用メモなんでわかりにくいかもしれませんがよければどうぞ. OpenCVをインストールして http://opencv.jp/sample/video_io.html#capture のサンプルコードが動くようにしておきます. ここの時点で前者の目標は達成されます. 本題は後者です.まず, KLT: Kanade-Lucas-Tomasi Feature Tracker http://www.ces.clemson.ed
Matの内容をXML形式でファイルに出力 or ファイルから入力する方法のメモ. 2種類のMatを出力するプログラム #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat matA = (cv::Mat_<double>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1); Mat matB = cv::Mat::ones(5, 5, CV_8U)*3; FileStorage cvfs("D:/test.xml", CV_STORAGE_WRITE); write(cvfs,"matA", matA); write(cvfs,"matB", matB); } 出力されたxmlファイルの中身. <?xml version="1.0"?> <opencv_storage> <matA type_
なにから覚える? Mat。 Matが使いこなせればOpenCVは使いこなせる、といっても過言ではない。 Matとは OpenCVにおいて、画像はMat型。 Matは『マトリックス・リローデッド』のMat。 つまり行列。 (昔のバージョンだとIplImageやCvMatというものを使っていた。相互変換可能) Mat生成 とりあえず、Matをつくるのだ。 インクルードなどの設定が終わっていて、 using namespace std; using namespace cv; と記述されているものとして進める。(これをしないとMatと書く代わりにcv::Matと書かなくてはならない。めんどい) Mat gori(Size(256, 512), CV_8U, Scalar::all(0)); これで 横256×縦512 unsigned char 型 全要素0 の行列ができた。 以下では一個ずつ整
はじめに アルファチャンネル付きPNGを重ね合わせる関数を作成しました。 OpenCV 2.3.1から透過pngが読み込めるようになりましたが、画像を透過して重ねる機能は用意されていません。 ネット上の記事では1画素ずつ演算する方法や、ROIを使って紹介されることが多いようですが、領域サイズの指定にシビアなことや、元画像の範囲外への描画ができないなど取り回しが悪くなります。 そこで本稿ではcv::warpPerspective()を用いた重ね合わせを紹介します。 サンプルコード: 1. 単純な重ね合わせ(transparent.cpp) 2.GUIで位置を調整(transparent2.cpp) 1.透過画像の読み込み 第2引数にIMREAD_UNCHANGEDを指定するとアルファチャンネルが読み込まれます。 cv::Mat transimg = cv::imread("transpare
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く