>こんにちは、いまopencvを使って画像処理の勉強をしています。
>サンプルプログラムを動かしてそれを見ながらやっています。
>ですので、あまり知識がないのですが
>二値画像は白と黒でできているのはわかったのですが、それを表のような感じに表示することはできないでしょうか?
>例えばこんな感じです。
>B B B B W
>W B W W B
>W B W B W
>のような感じに表現したいのですが・・・。どうやって作成したらいいのかわからないのでアドバイスをお願いします。
cv::Mat型の計算で、
b = a * bと計算すると演算結果がおかしくなります。
演算後に「ヒープが壊れていることが原因として考えられます。」と出力される場合もあります。
cv::Matのサイズが144×144以上であると発生するようです。
c = a * bでは正常動作します。
上記演算の中身はgemmで実行されているようで、
その関数を直接呼び出しても同じ現象が見られます。
cv::gemm (a, b, 1, cv::Mat (), 1, b, 0);
動作環境はOpenCV2.4.3を利用しており、
下記の環境で動作確認しました。
Win7 Pro x64 + VS2008 Pro + Win32で実行
Win7 Pro x64 + VS2008 Pro + x64で実行
Win7 Home Premium + VS2008 EE + Win32で実行
Win7 Home Premium + VS2008 EE + x64で実行
Win7 Home Premium + VS2012 EE + Win32で実行
TIFF: build (ver 42)
Media I/O:
JPEG 2000: build (ver 1.900.1)
ZLib: build (ver 1.2.6)
OpenEXR: NO
JPEG: build (ver 62)
OpenNI: NO
PNG: build (ver 1.5.9)
OpenNI PrimeSensor Modules: NO
TIFF: build (ver 42)
XIMEA: NO
JPEG 2000: build (ver 1.900.1)
OpenEXR: NO
Video I/O: DirectShow
OpenNI: NO
FFMPEG: YES (prebuilt binaries)
OpenNI PrimeSensor Modules: NO
codec: YES (ver 53.61.100)
XIMEA: NO
format: YES (ver 53.32.100)
はじめまして、画像処理初心者です。
OSはwindowsXPでOpenCV2.3です.
さっそくcookbookにある「カメラ画像をキャプチャする」を実行してみたのですが,以下のように、拡張子が見つからない(指定されていない)というエラーがでました.
「OpenCV Error: Unspecified error (could not find a writer for the specified extension) in unknown function, file \Users\vp\work\ocv\opencv\modules\highgui\src\loadsave.cpp, line 276」
ソースコードをいかに示します.imwriteに何か拡張子を指定する引数を加えればいいのでしょうか?(調べては見ましたがよくわかりませんでした)お願いします。
・OpenCVの各種リファレンス,とくに Python リファレンスと,
・OpenCV逆引きリファレンス
につきまして,Sphinxで生成しているとのことですが,PDF版(もしくはソース)は配布しておりませんでしょうか.
よろしくお願いします.
こんにちは
現在パーティクルフィルタを使った物体追跡のプログラムを作成しようと考えています。
OpenCVのCvConDensationのサンプルコードをそのまま実行したところ、以下のような問題が生じました。
・粒子がランダムに動かず、斜め線上(原点方向から対角方向)に配置されてしまう。
・しばらくすると線状になった粒子が画面外に流れて、消える。
・正常に動作する場合と、上記のような問題が生じる場合がある。しかも再現性がない。
同様の現象が起きた方はいらっしゃいますか?
また、原因と対処方法をご存じの方がいらっしゃいましたらご教授お願い致します。
環境は以下の通りです。
・OpenCV2.4.5
・Visual Studio 2010 C++
・Windows7 Home Premium 64bit
・Logicool Qcam Orbit AF QCAM-200RX
—
参考までに
・Debug、Releaseどちらも同様の現象が起きました。
・同じ端末で、OpenCV2.2.0でも同様の現象が起きました。
・WindowsXPの端末を使った場合、上記の問題は起きず正常に動作しました。
ので、OSの違いに原因があるような気がするのですが、それ以上のことはよくわかりませんでした。
こんにちは、いまopencvを使って画像処理の勉強をしています。
サンプルプログラムを動かしてそれを見ながらやっています。
ですので、あまり知識がないのですが
二値画像は白と黒でできているのはわかったのですが、それを表のような感じに表示することはできないでしょうか?
例えばこんな感じです。
B B B B W
W B W W B
W B W B W
のような感じに表現したいのですが・・・。どうやって作成したらいいのかわからないのでアドバイスをお願いします。
1. 要素アクセス
2. 表形式での出力(文字出力)
この点はいかがでしょうか?
半角の大なり・少なりが化けそうなので全角にしてあります。
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
cv::Mat bin2AA(cv::Mat src){
int csize = 8;
double fontScale = 0.30 * (double) csize / 8.0; // Heuristic
cv::Mat dst( src.rows * csize, src.cols * csize,
CV_8UC1, cv::Scalar(0) ) ;
for(int y = 0; y < src.rows; y++){
for(int x = 0; x < src.cols; x++){
uchar value = src.at(y,x);
cv::putText(dst,
(value == 0)?”B”:”W”,
cv::Point(x * csize , (y+1) * csize ),
cv::FONT_HERSHEY_SIMPLEX,
fontScale,
cv::Scalar(255) );
}
}
return dst;
}
int main(){
cv::namedWindow(“binImage”);
cv::namedWindow(“AAImage”);
cv::Mat lena = cv::imread(“lena.jpg”,0);
cv::resize(lena, lena, cv::Size(64, 64 ) );
cv::Mat binLena;
cv::threshold(lena,binLena, 128, 255, cv::THRESH_BINARY);
cv::Mat AALena = bin2AA(binLena);
cv::imshow(“binImage”, binLena );
cv::imshow(“AAImage”, AALena );
cv::waitKey();
return 0;
}
ずっと昔のことなので、返信に意味があるかはさておいて、、
>こんにちは、いまopencvを使って画像処理の勉強をしています。
>サンプルプログラムを動かしてそれを見ながらやっています。
>ですので、あまり知識がないのですが
>二値画像は白と黒でできているのはわかったのですが、それを表のような感じに表示することはできないでしょうか?
>例えばこんな感じです。
>B B B B W
>W B W W B
>W B W B W
>のような感じに表現したいのですが・・・。どうやって作成したらいいのかわからないのでアドバイスをお願いします。
http://cv.cellstat.net/opencv_app/color/hue.html が参考になると思います。Matのimgに対して、dataを用いてimg.data y * img.step + x * img.elemSize() + 1 ] というようにすれば座標(x,y)の色が取り出せます。2値画像であれば0と255で構成されるので、ifを使って判別すると良いと思います。
はじめまして。
OpenCV 2.2.0を利用しています。
画像の一部をコピーするためにcopyToでマスクを指定しています。
8bit画像では問題ないのですが、16bit画像だと正しい範囲をコピーできません。
copyToが適用できる画像の型に制約があるのでしょうか。
情報をお持ちの方がいらっしゃいましたらご教授ください。宜しくお願いします。
【OpenCV cvCaptureFromAVIのエラーについて】
はじめまして。
ARMのボード上でOpenCVのAPI cvCaptureFromAVI() を使ってAVIファイル(MJPEG)を読み出そうとしています。
ボード上でコマンドラインからFFMPEGを使用して、MJPEGのAVIファイルが作成されることは確認しています。
開発環境のPC上ではうまく読み出せているのですが。。。
cvCaptureFromAVI()がエラーとなる要因は
・ファイルパスの指定ミス
・FFMPEGのコーデック変換ミス
等のほかになにかあるのでしょうか。
ほかに何か別の要因があるのでしたらご教授願います。
よろしくお願い致します。
[環境]
HostPC:ubuntu-10.04
Taget:freescale i.mx6 SABRE
OpenCV:2.1.0
ffmpeg:0.5.9
AVIfile codec: Motion JPEG
はじめまして.
Visual Studio2008にて,OpenCV 2.31とC++/CLIを用いたソフトウェアを開発中です.
cv::mergeに関して解決できないエラーが起きて困っております.
具体的には,用意した2つのcv::Mat(type CV_64FC1)をstd::vectorにpush_backし,他のMat(type CV_64FC2)にmergeする際に,Debug構成で実行しますとmergeしようとしている2つの配列のサイズかdepthが異なるという旨のエラー
OpenCV Error: Assertion failed (mv[i].size == mv[0].size && mv[i].depth() == dep
th) in unknown function, file ..\..\..\src\opencv\modules\core\src\convert.cpp,
line 274
が発生してしまいます.
問題箇所のコードは下記のようになっております.
リリース構成ですと,上記のような問題は生じず正常に動作しているようです.ちなみに,画像のtypeを試しにCV_8Uに変更してみましたが同様の問題が生じます.
また,テスト用に作成したコンソールアプリケーション上ではデバッグ構成でも問題なく動作します.
対処法や,原因など,アドバイスいただけると幸いです.
初めまして
cv::Mat型の計算で、
b = a * bと計算すると演算結果がおかしくなります。
演算後に「ヒープが壊れていることが原因として考えられます。」と出力される場合もあります。
cv::Matのサイズが144×144以上であると発生するようです。
c = a * bでは正常動作します。
上記演算の中身はgemmで実行されているようで、
その関数を直接呼び出しても同じ現象が見られます。
cv::gemm (a, b, 1, cv::Mat (), 1, b, 0);
動作環境はOpenCV2.4.3を利用しており、
下記の環境で動作確認しました。
Win7 Pro x64 + VS2008 Pro + Win32で実行
Win7 Pro x64 + VS2008 Pro + x64で実行
Win7 Home Premium + VS2008 EE + Win32で実行
Win7 Home Premium + VS2008 EE + x64で実行
Win7 Home Premium + VS2012 EE + Win32で実行
テストコードのビルド環境は以下にあります。
http://sdrv.ms/YmoItY
cv::Mat型でb = a * bという演算は誤っているでしょうか?
是非ともご教授願います。
kna0kiさん
はじめまして。
と、乗算を別の行列で受ければ想定どおりの結果になりますね。
MatExprおよびgemmでインプレース処理がうまくいってないみたいです。
お名前を間違いまして、申し訳ありません。
yusukeさん、ご確認ありがとうございます。
yossyさん、ご確認ありがとうございます。
gemm関数のコードに不具合があると思われますので、ご報告しておきます。
また、opencvの2.4.4のコードを修正し、演算結果が正しくなることを確認しました。
改修したコードは以下URLにあります。
http://sdrv.ms/WeFdaS
以下は改修前後コードのdiffを取ったものです。
gemmの仕様は以下の通りです。
http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#gemm
gemmの第6引数dstに与えた変数と、第1引数src1もしくは第2引数src2に与えた変数が同じものである場合、dstへ代入するための演算結果を、上記改修前コードのAutoBuffer型の変数bufによって確保したメモリを用いて一時的に保持しようとします。
しかし、buf変数は元々別の演算結果を格納するために使われる変数で、演算結果に異常がでるようです。
改修後コードではAutoBuffer型の変数_bufを新設し、dstのためだけの一時バッファとして利用します。
以上です。
初めまして
現在openCVを用いてオプティカルフローを行っています
今は以下のプログラムでUSBカメラから算出していますがこれをすでに撮った動画に対して行い、結果の動画を保存できるようにしたいです
初歩的なこともわからず申し訳ありませんがよろしくお願いします
int
main (int argc, char **argv)
{
CvCapture *capture=0;//(add.1)
char *status;
int i, corner_count = 150;
CvPoint2D32f *corners1, *corners2;
CvTermCriteria criteria;
IplImage *src_img1, *src_img2, *dst_img;
IplImage *eig_img, *temp_img;
IplImage *prev_pyramid, *curr_pyramid;
IplImage *tmp;
capture = cvCreateCameraCapture(0);
dst_img=cvQueryFrame(capture);
tmp = cvCreateImage(cvGetSize(dst_img), IPL_DEPTH_8U, 3);
src_img1 = cvCreateImage(cvGetSize(dst_img), IPL_DEPTH_8U, 1);
src_img2 = cvCreateImage(cvGetSize(dst_img), IPL_DEPTH_8U, 1);
eig_img = cvCreateImage (cvGetSize (src_img1), IPL_DEPTH_32F, 1);
temp_img = cvCreateImage (cvGetSize (src_img1), IPL_DEPTH_32F, 1);
corners1 = (CvPoint2D32f *) cvAlloc (corner_count * sizeof (CvPoint2D32f));
corners2 = (CvPoint2D32f *) cvAlloc (corner_count * sizeof (CvPoint2D32f));
prev_pyramid = cvCreateImage (cvSize (src_img1->width + 8, src_img1->height / 3), IPL_DEPTH_8U, 1);
curr_pyramid = cvCreateImage (cvSize (src_img1->width + 8, src_img1->height / 3), IPL_DEPTH_8U, 1);
status = (char *) cvAlloc (corner_count);
criteria = cvTermCriteria (CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 64, 0.01);
cvNamedWindow (“Image”);
while(1){
dst_img=cvQueryFrame(capture);
cvCopy(dst_img,tmp);
cvCvtColor(dst_img,src_img1,CV_BGR2GRAY);
cvGoodFeaturesToTrack (src_img1, eig_img, temp_img, corners1, &corner_count, 0.001, 5, NULL);
printf(“found:%d\n”,corner_count);
//cvFindCornerSubPix (src_img1, corners1, corner_count, cvSize (3, 3), cvSize (-1, -1), cvTermCriteria (CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.03));
for (i = 0; i < corner_count; i++)
cvCircle (dst_img, cvPointFrom32f (corners1[i]), 3, CV_RGB (0, 0, 255), 2);
cvCalcOpticalFlowPyrLK (src_img1, src_img2, prev_pyramid, curr_pyramid, corners1, corners2, corner_count, cvSize (10, 10), 4, status, NULL, criteria, 0);
for (i = 0; i =0)break;
}
cvDestroyWindow (“Image”);
cvReleaseImage (&src_img1);
cvReleaseImage (&src_img2);
//cvReleaseImage (&dst_img);
cvReleaseImage (&eig_img);
cvReleaseImage (&temp_img);
cvReleaseImage (&prev_pyramid);
cvReleaseImage (&curr_pyramid);
cvReleaseImage (&tmp);
cvReleaseCapture(&capture);
return 0;
}
初めまして.
現在2.3を使用して画像認識,特に物体検出の研究をしているのですがopencv上で設計した自作の特徴量に対する検出器の制作は可能でしょうか? FeatureEvaluatorクラスを継承すれば独自の特徴量を実装可能との記述をweb上で見つけたのですがやり方がいまいちわかりません.
是非ともご教授願います.
OpenCV 2.4.3(2.4.2から)へのアップデートによりQtタスクバーアクション、「画像保存」「x30の値ラベル」に不具合が生じ、正しく動作しません。対処方法を教えて下さい。
SVMの使用方法について教えてください。
opencv2.0.0を使っています。9クラスに分離させたいのですが、CvSVM::train(const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), CvSVMParams params=CvSVMParams() )
のresponsesに入れるべきデータはそのような構造にすればよいのでしょうか。
また、多クラス識別の手法(one-vs-restなど)については、選択できるのでしょうか。
テンプレートマッチングについて教えてください。
マッチング結果は cvMinMaxLoc()で最大と最小の値と、その座標を得ることはできますが、2番目や3番目に大きい値や座標を知ることは可能でしょうか?画像内によく似た領域が何箇所か散らばっているある場合を想定しています。
OpenCVではマッチングの結果はスコア画像となります
(1画素毎にその位置でのマッチングスコアが格納された画像が得られる)
2番目・3番目のスコア位置は最高マッチングスコアのすぐ近傍にあることが多く
ある程度のかたまりで処理をするのがよいと思います。
想定されている使い方をしたい場合は、マッチングスコアの画像を閾値で2値化し、
ラベリング処理や輪郭追跡で島を見つけるのがよいのではないでしょうか?
初めまして。
iOS(Xcode)もしくはmacのターミナルを使って開発をしています。バージョンは2.4です。
透視投影変換について質問があります。
getPerspectiveTransformを使って変換行列を生成したあと、変換行列をテキスト等に保存し、
別のプログラムで画像と変換行列を読み込み、cvWarpPerspectiveで透視投影変換したいと考えています。
変換行列の入っている変数(pMatrix)はcv::Mat型なのですが、どこに変換行列自体が入っているのかわかりません。
変換行列が3*3であることから、pMatrix.datastartを9回インクリメントし、値を取ってくればいいのかと思いましたが、どうもうまくいっていないようです。
どうすれば、cv::Mat型の変数を外部に保存できるでしょうか?
また、再度読み込むにはどうすればいいでしょうか?
特定のOpenCVライブラリ(opencv_gpu240.libのみ)を使わず、
ソースコードを自作プロジェクトに組み込みたいと思っていますが
その方法が分かりません。
ご教授いただけないでしょうか。お願い致します
DLしたままではGPUライブラリが使えなかったのでリビルドしました。
BUILD_EXAMPLEにチェックを入れるとエラーがでます。
また、cv::getBuildInfomation()の結果が、
Debugでは正しく出力しているようですがReleaseでは変です。
どなたか原因がわかる方はいらっしゃいませんか?
環境
Windows7 Home Premium 32bit
VS2008
CUDA 4.1
OpenCV 2.4.0
Debugモード
General configuration for OpenCV 2.4.0 =====================================
Platform:
Host: Windows 6.1 x86
CMake: 2.8.6
CMake generator: Visual Studio 9 2008
CMake build tool: C:/PROGRA~1/MICROS~1.0/Common7/IDE/devenv.com
MSVC: 1500
C/C++:
Built as dynamic libs?: YES
C++ Compiler: cl
C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi
C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /R
TC1
C Compiler: cl
C flags (Release): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPR
ECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:
SSE /arch:SSE2 /Oi /fp:fast /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi
C flags (Debug): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPR
ECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:
SSE /arch:SSE2 /Oi /fp:fast /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
Linker flags (Release): /STACK:10000000 /machine:X86 /INCREMENTAL:NO
/debug
Linker flags (Debug): /STACK:10000000 /machine:X86 /debug /INCREMEN
TAL:YES
OpenCV modules:
To be built: calib3d contrib core features2d flann gpu highg
ui imgproc legacy ml nonfree objdetect photo stitching ts video videostab
Disabled by user: -
Disabled by dependency: -
Unavailable: androidcamera java python
GUI:
Win32 UI: YES
OpenGL support: NO
Media I/O:
ZLib: build (ver 1.2.6)
JPEG: build (ver 62)
PNG: build (ver 1.5.9)
TIFF: build (ver 42)
JPEG 2000: build (ver 1.900.1)
OpenEXR: NO
OpenNI: NO
OpenNI PrimeSensor Modules: NO
XIMEA: NO
Video I/O: DirectShow
FFMPEG: YES (prebuilt binaries)
codec: YES (ver 53.61.100)
format: YES (ver 53.32.100)
util: YES (ver 51.35.100)
swscale: YES (ver 2.1.100)
gentoo-style: YES
Other third-party libraries:
Use IPP: NO
Use TBB: YES (ver 4.0 interface 6003)
Use Cuda: YES (ver 4.1)
Use Eigen: YES (ver 3.0.5)
NVIDIA CUDA: (ver 4.1)
Use CUFFT: YES
Use CUBLAS: YES
NVIDIA GPU arch: 11 12 13 20 21
NVIDIA PTX archs: 11 12 13 20 21
NVIDIA GPU features: 11 12 13 20 20 20
Python:
Interpreter: NO
Documentation:
Build Documentation: NO
Sphinx: NO
PdfLaTeX compiler: NO
Tests and samples:
Tests: YES
Performance tests: YES
Examples: YES
Install path: C:/opencv/install
cvconfig.h is in: C:/opencv
—————————————————————–
Releaseモード
General configuration for OpenCV 2.4.0 =====================================
Platform:
General configuration for OpenCV 2.4.0 =====================================
Host: Windows 6.1 x86
CMake: 2.8.6
Platform:
CMake generator: Visual Studio 9 2008
CMake build tool: C:/PROGRA~1/MICROS~1.0/Common7/IDE/devenv.com
Host: Windows 6.1 x86
MSVC: 1500
CMake: 2.8.6
C/C++:
CMake generator: Visual Studio 9 2008
Built as dynamic libs?: YES
CMake build tool: C:/PROGRA~1/MICROS~1.0/Common7/IDE/devenv.com
C++ Compiler: cl
MSVC: 1500
C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi
C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /R
TC1
C/C++:
C Compiler: cl
Built as dynamic libs?: YES
C flags (Release): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPR
ECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:
SSE /arch:SSE2 /Oi /fp:fast /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi
C++ Compiler: cl
C flags (Debug): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPR
ECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:
SSE /arch:SSE2 /Oi /fp:fast /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi
Linker flags (Release): /STACK:10000000 /machine:X86 /INCREMENTAL:NO
/debug
C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /R
TC1
Linker flags (Debug): /STACK:10000000 /machine:X86 /debug /INCREMEN
TAL:YES
C Compiler: cl
C flags (Release): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPR
ECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:
SSE /arch:SSE2 /Oi /fp:fast /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi
OpenCV modules:
C flags (Debug): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPR
ECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:
SSE /arch:SSE2 /Oi /fp:fast /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
To be built: calib3d contrib core features2d flann gpu highg
ui imgproc legacy ml nonfree objdetect photo stitching ts video videostab
Linker flags (Release): /STACK:10000000 /machine:X86 /INCREMENTAL:NO
/debug
Disabled by user: -
Linker flags (Debug): /STACK:10000000 /machine:X86 /debug /INCREMEN
TAL:YES
Disabled by dependency: -
Unavailable: androidcamera java python
OpenCV modules:
To be built: calib3d contrib core features2d flann gpu highg
ui imgproc legacy ml nonfree objdetect photo stitching ts video videostab
GUI:
Disabled by user: -
Win32 UI: YES
Disabled by dependency: -
OpenGL support: NO
Unavailable: androidcamera java python
Media I/O:
GUI:
ZLib: build (ver 1.2.6)
Win32 UI: YES
JPEG: build (ver 62)
OpenGL support: NO
PNG: build (ver 1.5.9)
TIFF: build (ver 42)
Media I/O:
JPEG 2000: build (ver 1.900.1)
ZLib: build (ver 1.2.6)
OpenEXR: NO
JPEG: build (ver 62)
OpenNI: NO
PNG: build (ver 1.5.9)
OpenNI PrimeSensor Modules: NO
TIFF: build (ver 42)
XIMEA: NO
JPEG 2000: build (ver 1.900.1)
OpenEXR: NO
Video I/O: DirectShow
OpenNI: NO
FFMPEG: YES (prebuilt binaries)
OpenNI PrimeSensor Modules: NO
codec: YES (ver 53.61.100)
XIMEA: NO
format: YES (ver 53.32.100)
util: YES (ver 51.35.100)
Video I/O: DirectShow
swscale: YES (ver 2.1.100)
FFMPEG: YES (prebuilt binaries)
gentoo-style: YES
codec: YES (ver 53.61.100)
format: YES (ver 53.32.100)
Other third-party libraries:
util: YES (ver 51.35.100)
Use IPP: NO
swscale: YES (ver 2.1.100)
Use TBB: YES (ver 4.0 interface 6003)
gentoo-style: YES
Use Cuda: YES (ver 4.1)
Use Eigen: YES (ver 3.0.5)
Other third-party libraries:
NVIDIA CUDA: (ver 4.1)
Use IPP: NO
Use CUFFT: YES
Use TBB: YES (ver 4.0 interface 6003)
Use CUBLAS: YES
Use Cuda: YES (ver 4.1)
NVIDIA GPU arch: 11 12 13 20 21
Use Eigen: YES (ver 3.0.5)
NVIDIA PTX archs: 11 12 13 20 21
NVIDIA GPU features: 11 12 13 20 20 20
NVIDIA CUDA: (ver 4.1)
Use CUFFT: YES
Python:
Use CUBLAS: YES
Interpreter: NO
NVIDIA GPU arch: 11 12 13 20 21
NVIDIA PTX archs: 11 12 13 20 21
Documentation:
NVIDIA GPU features: 11 12 13 20 20 20
Build Documentation: NO
Sphinx: NO
Python:
PdfLaTeX compiler: NO
Interpreter: NO
Tests and samples:
Documentation:
Tests: YES
Build Documentation: NO
Performance tests: YES
Sphinx: NO
Examples: NO
PdfLaTeX compiler: NO
Install path: C:/opencv/install
Tests and samples:
cvconfig.h is in: C:/opencv
Tests: YES
—————————————————————–
Performance tests: YES
Examples: NO
Install path: C:/opencv/install
cvconfig.h is in: C:/opencv
—————————————————————–
2.4.1でやってみましたが、結果は同じでした。
error PRJ0019: ツールはエラーを返しました: “Building Custom Rule C:/opencv/modules/core/CMakeLists.txt” opencv_perf_gpu
error PRJ0019: ツールはエラーを返しました: “Building Custom Rule C:/opencv/modules/core/CMakeLists.txt” opencv_test_gpu
リポジトリからソースを持ってきてビルドしたところエラーは発生せず、getBuildInfomation()も問題なさそうです。
はじめまして。これからOpenCVの利用を考えているのですが、
OpenCVを用いて、傘をカメラの前で回したときの回転を検出することはできますでしょうか?
どなたかご存じの方が居らっしゃれば、ご教授いただけましたら幸いです。
何卒よろしくお願いいたします。
はじめまして。
私は現在、OpenCV勉強中で、iPhoneアプリで使用する為に
書籍等のサンプルを動かしていますが、armv6でしかビルドが通らない状態です。
原因は、書籍サンプルのライブラリ(Universal Binary)に
Armv7用のライブラリが入っていないためであることがわかりました。
:Armv7でも使用できるようにライブラリを作成する方法をご教授いただけないでしょうか
lipoの使用経験がなくどこにどのコードを入れて進めればよいのかもわかりません。
:また、OpenCV2.3.1等では、iPhoneでもライブラリの作成を行わずとも
xcodeで「libopencv_core.2.3.1.dylib」等を指定するだけでビルドできるのでしょうか?
以上、2点、ご教授いただけましたら幸いです。
何卒よろしくお願いいたします。
はじめまして。
chiledさんの目的を果たすためにはOpenCVをXcodeでビルドし,
ライブラリを生成する必要があると思います。
私はその方法でOpenCV2.3.0のライブラリを生成し、armv7で利用しています。
(OpenCV2.3.1をうまくビルドできなかったので2.3.0を利用しています)
目的達成までの手順は以下のような感じでしょう。
1.OpenCVのソースをダウンロード(私は2.3.0を使っています)
http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/
2.CmakeでXcodeのプロジェクトを生成
CMake,OpenCVで検索すればやり方は出てくると思います。
3.生成したプロジェクトを開き、ライブラリをビルド
ただビルドするとおそらくいろいろと怒られます。
私の場合は、下のサイトを参考にしました。
http://taichino.com/programming/2109
この過程で大切だと思ったポイントを以下にまとめます。
* ベースSDKをiOSにすること(デフォルトはMacになっている)
* highguiやhaartrainingなどのいらないターゲットを消すこと
* installスクリプトから削除したターゲットのインストール作業を取り除くこと
* ビルド時に選択しているアーキテクチャ(iOS DeviceかiOS Simulator)毎にライブラリが作られること
上4つは私の備忘録からのコピペなので分かりずらいと思いますが、
どこかでつまずいたときはこれらのどれかが悪さをしているかもしれません。
4.生成したライブラリをリンクさせて目的のソースをビルド。
3の時点で
iOSシミュレータ用のライブラリと、iPhone実機用のライブラリを作成するはずです。
それぞれリンクを分けないとうまく作動しません。
いろいろと説明が欠けているかもしれませんが、
私はこんな感じで解決できました。
初めまして.
動画ファイルをオープンし、フレーム画像を1枚取得するプログラムを記述しています。
ファイルのサイズが4GBを超えると、取得した画像が緑色になってしまいました。
DLLには、PATHを通さず、実行ファイル直下においていますが、opencv_ffmpeg.dll(x64の場合は、opencv_ffmpeg_64.dll)を置いた場合は、緑色にならずに、正常に画像を取得できます。
大きな動画ファイルを扱うときは、必ずopencv_ffmpeg.dllを使用しないといけないのでしょうか。
どなたか似たような症状の経験がある方はいらっしゃいませんでしょうか?
OS:Windows7 64bit
OpenCVのバージョン:2.3.1
開発環境:Visual C++ 2008
動画ファイルは、非圧縮のAVIファイル
以下にソースを記載いたします。
#include “stdafx.h”
#include
int _tmain(int argc, _TCHAR* argv[])
{
cv::VideoCapture _Capture(“C:\\Temp\\test.avi”);
cv::Mat frame;
_Capture >> frame;
cv::namedWindow(“image1″, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);
cv::imshow(“image1″, frame);
cv::waitKey(0);
return 0;
}
どうが、宜しくお願いいたします.
初めまして.
動画の隣接フレーム間でBRIEFデスクリプタのマッチングをする,という処理を繰り返し行うプログラムを作っているのですが,
処理を繰り返すうちに落ちてしまいます.
Debugモードのときは問題なく実行でき,Releaseモード時のみ問題が発生します.
BruteForceMatcherでマッチングを実行するときに落ちているようなのですが,
どなたか似たような症状の経験がある方はいらっしゃいませんでしょうか?
OS:Windows7 64bit
OpenCVのバージョン:2.3.1
開発環境:Visual C++ 2010
Intel C++ Compiler XE 12.1使用
宜しくお願いいたします.
はじめまして、画像処理初心者です。
OSはwindowsXPでOpenCV2.3です.
さっそくcookbookにある「カメラ画像をキャプチャする」を実行してみたのですが,以下のように、拡張子が見つからない(指定されていない)というエラーがでました.
「OpenCV Error: Unspecified error (could not find a writer for the specified extension) in unknown function, file \Users\vp\work\ocv\opencv\modules\highgui\src\loadsave.cpp, line 276」
ソースコードをいかに示します.imwriteに何か拡張子を指定する引数を加えればいいのでしょうか?(調べては見ましたがよくわかりませんでした)お願いします。
//
#include “stdafx.h”
#include
#include
#include
#include
#ifdef _DEBUG
//Debugモードの場合
#pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_core230.lib”)
#pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_imgproc230.lib”)
#pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_highgui230.lib”)
#else
//Releaseモードの場合
#pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_core230d.lib”)
#pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_imgproc230d.lib”)
#pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_highgui230d.lib”)
#endif
int
main(int argc, char *argv[])
{
cv::VideoCapture cap(0);
// 様々な設定…
cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
// カメラがオープンできたかの確認
if(!cap.isOpened()) return -1;
cv::namedWindow(“Capture”, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);
while(1) {
cv::Mat frame;
cap >> frame; // キャプチャ
// 様々な処理
// …
cv::imshow(“Capture”, frame); // 表示
if(cv::waitKey(30) >= 0)
{
cv::imwrite(“cap.jpg”, frame);
break;
}
}
}
補足:すいません何故かインクルードの部位が抜けてます。追記させてください。
#include “stdafx.h”
#include
#include
#include
#include
です。
なんどinclude部を書き込んでも何故か表示しません。よくわかりませんが、プログラムのインクルードは問題ないとおもいます
私はOpenCV(2.1と2.3)のサンプルプログラムのstereo_match.cppというプログラムを使っていて、視差画像と3次元座標値群を出力させているのですが、どうもその2つの結果がかみ合わない気がします。視差画像に映ってる部分(例えば箱など)が座標値群に出てこないんです。どのようにすれば良いのかアドバイス頂けたら幸いです。また、この処理をやったことのある方がいましたらどのようにすればいいのか教えていただけないでしょうか?よろしくお願いします。
CODE BOOKの中に Bilateral Filter部分のコードはmedian filterのコードと同じのような気がします.
ご指摘ありがとうございます。修正いたしました。
初めまして
OpenCV 2.3でのテンプレートマッチングについての質問です.
OpenCVで探索範囲を限定してテンプレートマッチングを行うためにはどのような方法があるのでしょうか?
やはり,元の画像から探索範囲だけを切り抜いたのちにマッチングしなければならないのでしょうか?
cv::goodFeaturesToTrackのようにROIで範囲を限定してやることはできないでしょうか?
どうか知恵をお貸しください.
宜しくお願い致します.
OpenCV2.0から2.3.1へ移行し、2.0で書いた顔認識プログラムがほぼそのままで2.3.1に流用できたのですが、CascadeClassifier::detectMultiScaleのアルゴリズム変更のせいか、同じ引数を渡して実行してみると、対象画像に顔がないときだけ非常に重くなるようになってしまいました。 2.0のときにこのような挙動はありませんでした。 ちなみに2.0はOpenMP対応版を使っています。
このような挙動の回避手段をご存知の方がおられましたら、お教え願えれば幸いです。
はじめまして。
バグと言うか現状の仕様だと思いますが、詰まったことがあったので報告します。
C++ インターフェイスで subtract 関数(や他の類似の関数でも?)では配列などと Scalar を引数に取れるようになりましたが、Scalar_ を渡すと型が不一致になる assert が出ます。
開発版では解消されるのでしょうか?
例:
//Scalar_ ave;
Scalar ave;
std::vector data;
std::vector sub;
(略)
ave = cv::mean(data);
cv::subtract(data, ave, sub); // ave が Scalar_ だとエラー
with OpenCV 2.3.1, Visual C++ 2010 Express, Windows XP
saturate_castについて質問です。
cv::saturate_cast(12.5)を実行した場合、戻り値は13を期待していたのですが、
12に丸められてしまいます。
リファレンスには、
>パラメータが浮動小数点数であり,変換後の型が整数(8ビット,16ビット,32ビット)である場合,
>この浮動小数点数は,まず最も近い整数値に丸められてから,必要ならば切り詰められます
>(変換後の型が,8ビットあるいは16ビット整数の場合).
とあるので、使い方を間違ているわけではないと思っているのですが。。。
同じような問題に当たったことがある型はいるでしょうか?
使用しているOpenCV環境は以下となります。
OpenCV2.3(CMakeとVisual Studio 2005でビルド)
Visual Studio2005
Windows7
単純に飽和してるかどうかを判断した後にキャストしている処理かとおもうので12に良いのでは?と.四捨五入するにはcvRoundをつかうといいかと思います.
上記訂正です.私の環境でテストしてみたところ四捨五入ではなく0.5までは切り捨て,それ以上で切り上げになっているようです.(0.5は0,0.51は1)
返信ありがとうございます。
saturate_castのソースを追ってみたのですが、内部でcvRoundをコールしており、
cvRoundの動作は、私の環境だとアセンブリ命令 fistpで小数点以下を丸めているようです。(コンパイル環境に応じて変わるようです。)
この命令は、0.5を偶数方向に四捨五入しているするようです。
私の勘違いであれば申し訳ないのですが、
下記アドレス
http://opencv.jp/sample/object_detection.html
「物体検出」のサンプルコードにおいて、
CvHaarClassifierCascade *cascade
がメモリ解放されておらず、
メモリリークを起こしているように見えます。
プログラムの末尾に
cvReleaseHaarClassifierCascade(&cascade);
が必要ではないでしょうか?
ご確認をよろしくお願いします。
初めまして
OpenCV.2.2を VC++ 2010 Expressで使おうとしています。
「>C:\OpenCV2.2\include\opencv2/core/types_c.h(284): error C3862: ‘cvRound’: /clr:pure または /clr:safe を伴うアンマネージ関数をコンパイルできません1>
インラインのネイティブ アセンブリはマネージ コードでサポートされていません」
というメッセージが出てコンパイルできません。
どうしたらいいかお教え頂けたら幸いです。
こんにちは。
プロジェクトのプロパティ->構成プロパティ->全般->共通言語欄タイプサポート->共通言語ランタイプサポート(/clr)に変更してみたら如何でしょう。
自分も、ここが“純粋MSIL共通言語ランタイプサポート(/clr:pure)”だと、同様なエラーがでました。
お試しください。
些細ではありますが、イントロダクションのサンプルコードに誤りを見つけました。
contrast_gain と定義されている変数が、後方でconstrast_gainとして呼び出されています。(後の方のsが余計です)。
http://opencv.jp/opencv-2svn/cpp/introduction.html
報告のみ、失礼します。
ご指摘,有難うございます.あとで修正しておきます.
はじめまして。
2週間ほど前からOpenCVを勉強し始めたものですが、今カメラから取り入れた映像をAVIファイルに書き込むというプログラムを作って(『詳解OpenCV』の例題2-10を用いています)いるのですが、カメラをどのように指定したらよいのかがわからず、手詰まり状態なのですがどのようにしていしたらよいのか教えていただけますでしょうか?
UVCカメラでキャプチャを行っています。
ubuntu+OpenCV2.3.0ですが、2台のカメラをキャプチャ出来ません。
(no space left on deviceというエラー)
V4Lの問題のようですが、解決策はPCIのUSB拡張ボードを使えという程度しかありませんでした。
仕方ないので、片方のカメラを閉じてもう片方のカメラを開いてという繰り返しを行ってみた所
メモリリークしているようです。
2個だからかなあと思って1個だけのカメラのオープンクローズを繰り返して見ましたが、現象は
同じでした。
どんどんメモリを食いつぶしていって最後にはエラーになります。
こういう事をする例がないのですが、私が何か処理を忘れているのでしょうか?
(それとも検証されていないバグなのか・・・)
何か情報をお持ちの方、ご教授頂けると助かります。
(他のバージョンでは起きないとか・・・)
市販のUSBカメラとそのトリガ入力を利用したいので、付属のSDKのサンプルで取込んだ画像をOpenCVへ変換したのですが、画像が1/9の大きさに表示されてしまいます。(横方向、縦方向 ともに1/3の大きさで 一番上側3画面のみ表示となります。)
相手側はLPBYTE PBuffで、OpenCV側はchar *なので、下のようなプログラムにしました。
何故、画像が小さくなるのか アドバイス頂けないでしょうか、よろしくお願いします。
img = cvCreateImage(cvSize(640, 480), 8, 3);
printf(“img->widthStep = %d\n”,img->widthStep);
int y, x;
for (y = 0; y height; y++) {
for (x = 0; x width; x++) {
/* 画素値を直接 copy */
img->imageData[img->widthStep*y+x*3]
=pBuff[img->widthStep*y+x*3];
img->imageData[img->widthStep*y+x*3+1]
= pBuff[img->widthStep*y+x*3+1];
img->imageData[img->widthStep*y+x*3+2]
= pBuff[img->widthStep*y+x*3+2];
}
}
cvNamedWindow (“Image”, CV_WINDOW_AUTOSIZE);
cvShowImage (“Image”, img);
USBカメラ画像の解像度や画像フォーマットが不明なので返答が難しいですが、USBカメラ画像がグレースケールなどBGR以外のフォーマットで取り込まれているということはないでしょうか?
余談ですが、forループの条件に”<"が抜けてるのは転記ミスと信じるとして、画素のコピー部分は以下のように、OpenCVのIplImageではwidthStepを使って、pBuffにはwidthを使ったほうが良いと思います。(今回の解像度では問題ないと思いますが)
サンプルコードの顔の検出 cvHaarDetectObjectsにてリンクエラーが発生。
ディレクトリー、追加の依存ファイルにlibをネットを頼りに追加しましたが
改善されません。環境は、WIN7とVC2010と2.20です。cvHaarDetectObjects
の正しいヘッダファイルは、なんでしょうか?教示頂けるとたすかります。
現在の記述
#include
#include
error LNK2019: 未解決の外部シンボル _cvHaarDetectObjects が関数 _main で参照されました。
opencv_objdetect220.lib をリンクしてますか?
はじめまして、
cvCreateImage関数を呼び出すと、なぜか別の配列が壊れます。
環境はWin7(32bit)+VS2010+OpenCV-2.2.0-win32-vs2010.exeです。
具体的には(定義部)
で、この段階ではvoxeldata->data[0][0][0][0]は正常に読めるのですが、次に
img = cvCreateImage(cvSize(voxeldata->width, voxeldata->height), IPL_DEPTH_8U, voxeldata->planes);
を呼ぶとvoxeldata->data[0]が0xccccccccに化け、volxeldata->[0][0][0][0]を読むとエラーになります。
はじめまして.
cvCreateImage()の呼び出しだけで,関係ないメモリ領域が破壊されることはないはずなので,おそらく原因は別にあると思うのですが….問題を再現(実行)できる最小限のコードを見せていただければ検証できるかもしれません.
単なるmallocでも配列が破壊されるのを確認しました。
opencvの問題ではなさそうです。
お騒がせいたしましたm(_ _)m
はじめまして.
私はOpenCV-2.1のサンプルプログラムのstereo_match.cppというプログラムを使ってるんですが,出力であるdepth画像はきれいに出るのですが3次元座標値がどうしてもうまく表示できません.obj形式で出力してjavaviewという3Dビューアを使って見てるんですが,いつも放射線状になってしまってdepth画像と対応してる点が見当たらないんです.
自分でもいろいろ調べたのですが,何が良くて何が悪いのかよく分からないんでアドバイス頂けると幸いです.よろしくお願いします.
ソースを見てみましたが,出力はデプスではなく視差画像と各画素の3次元点(x,y,z)のプロットですね.saveXYZ()での出力を使っても駄目でしょうか?
返信ありがとうございます.私もソースをもう一度見てみたのですが,saveXYZはソースの中にあって使われてると思うんです.うーん…そもそもsaveXYZって3次元座標値を保存するものなんですよね??
ほんと学習不足の意見で申し訳ないです…
放射線状となっていましたので,視差と奥行きが違っていたのかなとの推測で言っていました.saveXYZはreprojectImageTo3D関数を使って視差をxyzの3次元空間に投影する関数です.
javaviewの入力フォーマットを知らないためこれ以上何とも言えませんが参考までに.
ほんといろいろありがとうございます.
この3次元座標値さえきちんとした形で出力できれば,物体の形状を構成することができると思うんですけども…
私がやろうとしている事は多方向から撮影し,視差画像と3次元座標値を使って様々な方向から撮影した画像をつなぎ合わせて1つの物体の形状をつくろうとしています.いわゆる形状計測です.他にこれをしたらいいよとかこれを使えばいいんじゃない的なアドバイスをもらえるとありがたいです.自分でもいろいろしてみるんですが出来が悪くて…頼りっぱなしですみません.
まずは,1枚のxyzがモデル化できるようになったら(ここのサンプルであるPoint Cloud renderingのサンプルではできているはずです.),次は複数のデプスマップや3次元座標を,xyzの座用系の統一やモデルの位置合わせ(ICPアルゴリズムなどを使う)を行えばできるはずです.ROSのPoint Cloud Libraryや東大の池内研究室の論文などを参考にするといいと思います.
いろんな情報ありがとうございます.
早速,東大の池内研究室やPCLなんかも見ました.とても役に立ちそうです.
ところでこのサイトにあるpoint cloud renderingってすごく私のやっていることに近いんですが,具体的に何をしているものなのですか?左右画像からマッチングをして,そのデプス画像に原画像をくっつけて立体的に表示してるんですよね?
openCVとopenGLを使用して、ARのようなカメラ映像の上に3Dモデルを描画したいのですが、ウインドウにカメラの映像が表示されなくて困っています。何か良い方法があれば教えて下さると助かります。よろしくお願いします。
作業環境は以下の通りです。
opencv1.1pre1、visualC++2008、wiandowsXP、glut3.7.6
OpenCVで作成したウィンドウ内に,OpenCVでキャプチャしたカメラ画像が表示できない,という意味でしょうか?それでしたら,Web上に多くのサンプルがあると思うのですが,どの例で動かなかったのか示していただければ,何かアドバイスできることがあるかもしれません.
openGLで作成したウィンドウに2Dの四角形を作り、テクスチャとしてカメラでキャプチャした画像を貼り付けるという風にして表示させようとしているのですが、うまくいきませんでした。四角形自体は表示されているので、テクスチャに変換するところに何か問題があるのではと私は思っています。
OpenCV1.1をご利用とのことで,普段はIplImage構造体を使われていると思いますので,以下のimageをIplImageとして,
というように指定すればよろしいかと思います.
すみません、試してみたのですがまだうまくいかないです。テクスチャが問題ないとすると、描画や表示の部分に問題があるのでしょうか?描画にはglEnable()を使っていて、表示にはglutSwapBuffers()を使っています。
このような感じでいかがでしょうか.
はじめまして、VideoWriterについて質問があります。
使用環境は、
Opencv2.2.0(コンパイル済のexeでインストール)/VisualStudio2010(C++)/WindowsXpです。
ReleaseモードでVideoWriterを初期化する際に、CV_FOURCCでコーデックを指定すると、malloc.cの89行目でエラーが生じて実行できません。Debugモードでは問題なく録画が可能です。
その後、自分でコンパイルしたdll・libファイルを試しましたが、状況変わらずでした。
2.1.0を使っていたときは、コンパイル済みのexeをインストールしたときは、Release/DebugモードともにCV_FOURCCを使って録画可能でしたが、自分でコンパイルしたdll・libファイルを使うと何故かCV_FOURCCを使うと録画できなくなってしまいました。エラーは前述と同じです。
原因・改善策について何か御存知でしたら、教えてください。
画像のキャプチャについて質問します。
トリガー端子付のUSBカメラを使い、トリガのタイミングで画像をキャプチャすることはできるかアドバイスをお願いします。下のようなプログラムでは常時、画像を取込めることは確認できています。
よろしくお願いします。
while (1) {
src_img = cvQueryFrame (capture); // カメラから画像をキャプチャする
cvShowImage (“生画像:Capture”, src_img);
はじめまして.
私はそのカメラ環境を持っておりませんので,お答えするのが難しいのですが,そのような高度なカメラには通常,専用のSDKが付属しているのではないでしょうか.もしそうでしたら,それでキャプチャを行い,取得した画像をOpenCVで利用できる形式に変換するというのが最も確実な気がします.
OpenCV自体にはトリガを送信する機能はありませんし(そもそも,インタフェースも不明なわけですが),トリガが余所から送られたか否かを知る方法もないと思います.
参考になれば幸いです.
初めまして。
私はこれからGPGPUを使おうと考えています。
OpenCVも2.2でGPUを使うことが可能になりましたが、このモジュールを使うのはまだ時期尚早でしょうか?
環境は整えましたが、
gpu::threshold()関数でマニュアルと違う数の引数を求められて戸惑っています。
実際にOpenCV2.2のGPUモジュールを使っておられる方はおられるのでしょうか?
漠然とした内容で申し訳ないですが、アドバイス等有りましたらお願いします。
はじめまして.
私はGPGPUの機能を利用できる環境を持っていないので,実際のところGPUモジュールの完成度はよく分からないです.ご指摘のgpu::thresholdを見てみましたが,これはマニュアルのミスだと思います.
実際には,
と,定義されているようです.
gpuモジュールの開発にはNvidiaのエンジニアも関わっているということなので,これから完成度も上がっていくと思われますが,どの辺で手を出すかは利用者次第だと思います.日本語圏内では,まだまだ利用者は少ないようですね.
Opencv2.1.0のインストールについて質問があります。
SourceForgeからダウンロードしてきたものに入っている、Opencv2.1.0/src/highguiの中のC/C++ファイル(cvcapファイル)をすべてインストールしたいのですが、どうすればよいでしょうか。
idojun様のOpencv2.0.0インストール方法で試してみましたが、インストールはされませんでした。
CMakeのオプションをいじるものでしょうか。
アドバイスよろしくお願いします。
はじめまして.環境(windows,linux,mac)は何をお使いでしょうか?windowsだとすると,インストールはインストーラをご利用でしょうか?それとも,ソースからのコンパイルでしょうか?
また,src/highgui/cvcap*.cppをすべてインストールしたいとのことですが,これらはソースファイルであり,通常はインストール不要だと思われます.目的などをお教えいただければ,アドバイスできるかもしれません.
2.2系の API を使っているのですが、バグのように思える問題を見付けました。
GenericDescriptorMatcher::clear() の後に再度 add() しようとすると異常終了してしまいます。
リファレンスによると、
http://opencv.jp/opencv-2svn/cpp/features2d_common_interfaces_of_generic_descriptor_matchers.html#cv-genericdescriptormatcher-clear
↓
訓練コレクション(画像とキーポイント)をクリアします.
↑
とあるのですが、ソースを見ると、どうやらキー・ポイントしかクリアしていないようです。
https://code.ros.org/trac/opencv/browser/trunk/opencv/modules/features2d/src/matchers.cpp#L751
↓
void GenericDescriptorMatcher::clear()
{
trainPointCollection.clear();
}
↑
このため、続けて add() しようとすると、画像とキー・ポイントの対応が取れ無くなっている様に思えます。
本家に報告すべきでしょうか?
今,環境がないので簡単な確認しかできませんが,確かに仰る通りの問題だと思います
(VectorDescriptorMatcherなどでも同様の問題が起きそうな気がします).
Matcherを新たに再作成することを除けば,有効な回避策もなさそうなので,バグトラッカーに登録されると良いと思います.
登録してみます。
ちなみに、検証コードを作ってみました。
https://code.ros.org/trac/opencv/ticket/982
として登録してみました。
ちなみに、 ROS.org に登録しても、すぐには Trac のアカウントに反映されないようですね。
OpenCVのライセンスはBSDライセンス(相当?)で、OpenCVのhighguiのライブラリはlibavcodecに依存していると思います。動画ファイルを扱うプログラムを作ろうとするとhighguiを使うことになると思いますが、OpenCVのライセンスにしたがうだけでよいのでしょうか?それともOpenCVのライセンス+libavcodecのライセンス(LGPL)の両方にしたがうことになるんでしょうか?
色々調べましたが、ライセンスの文書が難しくよくわかりません。
よろしくお願い致します。
個人的な見解ですが,配布時にリンクされるライブラリ全てのライセンスに従っておけば問題ないのではないでしょうか.ソースコードに手を加えず,動的にリンクする場合,両方のライセンスに従うことは可能だと思います.
早速の回答ありがとうございます。
その場合、LGPLとBSDライセンスは一部矛盾があるとのことですが、自分で書いたコードはどの様なライセンスにしておくのがよいでしょうか?ご意見よろしくお願い致します。
ソースコードに手を加えず,ライブラリを動的にリンクする場合,それらのライセンスに従うのに矛盾は生じないと思うのですが,どのような矛盾があるのかを教えて頂けますでしょうか.
自分も専門家ではないので,思い違いがあるのかもしれません.
早速の返事ありがとうございます。
矛盾があると思っていたのは以下のサイトの記述からです。
よろしくお願い致します。
http://www.gnu.org/licenses/gpl-faq.ja.html
該当部分を以下にコピーします。
どうしてオリジナルのBSDライセンスはGPLと矛盾するのですか?
オリジナルのBSDライセンスはGPLには無い特定の要件を課すからです。その要件とは、プログラムの宣伝に関するものです。GPLでは:
You may not impose any further restrictions on the recipients’ exercise
of the rights granted herein.
(訳: あなたは受領者に、ここで認められた権利の行使に関して更なる制限を課し
てはならない。)
オリジナルBSDの宣伝条項はまさしくそのような「更なる制限」を提供しており、よってGPLと矛盾します。
改訂BSDライセンスには宣伝条項がありませんから、問題ありません。
リンク先を拝見しました.まず,この記述はGPLについて書かれているようです.GPLとLGPLは,(特に,それをライブラリとして利用する場合)異なります.
LGPLを動的にリンクした実行ファイルが「派生物」にあたるかどうかは諸説あるようですので断定はできませんが,個人的には
http://www.opensource.jp/lesser/lgpl.ja.html にあるように,
という考えです.
また,ライセンスを読んでいただければわかると思いますが,OpenCVは広告条項が除かれた所謂修正BSDです.現在では旧BSDはあまり利用されないので,BSDといった場合は修正BSDであることが多数だと思います.
参考になれば幸いです.
二値化された画像から抽出された輪郭の座標データをxmlファイルに書き込む場合、cvOpenFileStorageやcvStartWriteStructを使っています。OpenCVのSAMPLE-CODEにあるものです。しかしこれは書き込む各輪郭の順番を作業者が選べません。
そこでわたしは複数の輪郭を一つ一つマウスで選択し、選択した順番どおりに輪郭の座標点を書き込む方法を探しています。
流れは、 選択→Enterキー→書き込み→選択→Enterキー→選択→Enterキー…といった感じです。
現状は、選択した輪郭を書き込むことはできますが、毎回データを追加したいのですがそれができず毎回上書きしてしまい、結局ファイル内には一つの輪郭の座標データしか残りません。
ファイルを読み込んでも上書きせず追加するような関数はないでしょうか。または参考となるURLがありましたら教えてください。今大変困っています。アドバイスお願いします。
私が状況をよく理解していないかもしれませんが,「途中でファイルストレージを閉じず(cvReleaseFileStorage)に,最後までデータを書いてから閉じる」,という方法では,何か不都合がありますでしょうか.
そのような方法が使えない場合,輪郭を指定した順番通りに,別の構造体に保存して,最後にまとめて書き込む,という方法になるかと思います.
静止画キャプチャの解像度の変更について質問があります.
現在,
opencv1.0.0
Linux Debian 2.6.26-2-686
を使用しています。
opencv1.0.0では,CvCaptureSetPropertyの解像度の変更が未実装だということがわかりました.
しかし,ウインドウズでは以下のurlのように
http://tech.groups.yahoo.com/group/OpenCV/message/56022
cap.cppが存在して,書き換えれば対応するみたいですが,Linux版にも同じようなファイルが存在するのでしょうか?
もしないようでしたら,opencv2.xに変更しようと考えています.
その場合,cap_vfw.cppは確認できたのですが,Linuxではどのファイルにあたるのでしょうか?
素人で申し訳ありませんが,本当に困っています・・・.
どうかアドバイスよろしくお願いします.
opencv-1.0.0 において,Windows版の cap_vfw.cpp に対応するファイルは cap_v4l.cpp です.
これを書き換えたことによって所望の動作になるかどうかは確認していませんが,一応参考までに.
輪郭の凹状の欠損についてアドバイス有難う御座いました。解決しました。
輪郭の凹状の欠損について質問します。
①画像を2値化のあと、
②輪郭の検出 cvFindContours()を行い、
③輪郭の凸包を計算して hull = cvConvexHull2( )、
④輪郭が凸かどうかチェックしてcvCheckContourConvexity( contours )、
⑤凹状欠損を計算する
result = (CvSeq *)cvConvexityDefects(contours,hull,storage2);
⑥result->totalの要素数分を直接アクセスする
CvPoint* p = (CvPoint*)cvGetSeqElem(result,i);
⑦次にp->x,p->yの値をprint文にて表示する
printf(“(%d,%d)\n”, p->x,p->y);
p->x, p->yの値は 上の③凸のx,y値とは全く違う値になりました。
要素のp->x,p->yは何か違う値を参照するのでしょうか?
マニュアルには
cvConvexityDefect()はCvConvexityDefect構造体のシーケンスを返すとありますので、CvConvexityDefect構造体の値を参照したいのですが、
下のようにプログラムを書くと
CvConvexityDefect *defect=0;
defest = (CvSeq *)cvConvexityDefects(contours,hull,storage2);
ビルドの時に
‘CvSeq *’ から ‘CvConvexityDefect *’ に変換できません。となってしまいます。
なぜでしょうか?
アドバイスをお願いします。
おっしゃるように,cvConvexityDefects が返すのは,CvPoint ではなく CvConvexityDefect のシーケンスです.
ですので,例えば,次のようになります.
CvSeq* と CvConvexityDefect* は,全く異なる構造体を指すポインタなのでキャストすることはできません.CvSeq というシーケンスの要素が CvConvexityDefect であって,CvSeq が CvConvexityDefect の配列,というわけでありません.
このような場合,上記のように,cvGetSeqElemではなくCV_GET_SEQ_ELEMマクロを利用すると,キャストの前に,defects->elem_size が sizeof(CvPoint) と一致しないエラーがでるので間違いに気づきやすいと思われます.
サーバメンテナンスのため,1時間程度,断続的にアクセスが行えなくなりますのでご注意下さい.
・作業日時:2010年8月9日(月) 2:00~6:00
リファレンスマニュアルのページ下部に表示されているメッセージの
「このドキュメントに誤りなどを見つけたらbug report まで報告してください.」
のbug reportのリンクが古い
http://sourceforge.net/tracker/?func=add&group_id=22870&atid=376677
になっています。一応機能しているようですが、現在はメインの
https://code.ros.org/trac/opencv/wiki
に修正しておくべきではないでしょうか。
OpenCV-2.1のドキュメントのbug report先も全て修正しておきました.ご報告ありがとうございます.
OpenCV.jpに対するご指摘や要望などをお願いします.
投稿は,このように表示されます.
また,[cpp] … [/cpp] タグや, [python] … [/python] タグでコードを囲むと,以下のように表示することが出来ます(ここでは説明のために,全角ブラッケット”[”, “]”を利用していますが,実際には半角ブラケット “[", "]” を利用します).
返信は,このように表示されます.
URLは,自動的にリンクになります. http://opencv.jp/