C ++でOpenCVを使用してマウスイベントを操作するにはどうすればよいですか?
マウスイベントは、OpenCVの最も便利な機能の1つです。 OpenCVでは、マウスポインターの位置を追跡し、クリック(右、左、中クリック)を追跡できます。 OpenCVは、ロボット工学とコンピュータービジョンに幅広い用途があります。ロボット工学やコンピュータビジョンの追跡では、マウスポインタとクリックが頻繁に使用されます。
ここでは、画像上のマウスポインタの位置を追跡し、クリックを追跡する方法を理解します。
次のプログラムは、マウスポインタとクリックの位置を追跡する方法を示しています。
例
#include<iostream> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace std; using namespace cv; void locator(int event, int x, int y, int flags, void* userdata){ //function to track mouse movement and click// if (event == EVENT_LBUTTONDOWN){ //when left button clicked// cout << "Left click has been made, Position:(" << x << "," << y << ")" << endl; } else if (event == EVENT_RBUTTONDOWN){ //when right button clicked// cout << "Rightclick has been made, Position:(" << x << "," << y << ")" << endl; } else if (event == EVENT_MBUTTONDOWN){ //when middle button clicked// cout << "Middleclick has been made, Position:(" << x << "," << y << ")" << endl; } else if (event == EVENT_MOUSEMOVE){ //when mouse pointer moves// cout << "Current mouse position:(" << x << "," << y << ")" << endl; } } int main() { Mat image = imread("bright.jpg");//loading image in the matrix// namedWindow("Track");//declaring window to show image// setMouseCallback("Track", locator, NULL);//Mouse callback function on define window// imshow("Track", image);//showing image on the window// waitKey(0);//wait for keystroke// return 0; }
出力
-
C ++を使用してOpenCVでバイナリイメージを反転する方法は?
バイナリイメージを反転するとは、ピクセル値を反転することを意味します。視覚的な観点から、バイナリイメージを反転すると、白のピクセルは黒に変換され、黒のピクセルは白に変換されます。 この関数の基本的な形式は-です。 cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY); 次の行は、グレースケール画像をバイナリ画像に変換し、変換された画像を「binary_image」行列に保存しています。 threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY); ここで、
-
C ++を使用してOpenCVでバイナリイメージを作成するにはどうすればよいですか?
バイナリイメージは、白黒の2色を表す単なるデジタルイメージです。画像処理の観点から、バイナリ画像には、0と1の2つの可能な値を持つピクセルが含まれています。ピクセルの値が0の場合、それは純粋な黒色を表します。ピクセルの値が1の場合、それは純粋な白色を意味します。 グレースケール画像では、それぞれに256の異なる可能な値があります。しかし、バイナリイメージでは、可能な値は2つだけです。バイナリイメージには、さまざまなタイプのアプリケーションがあります。たとえば、形態学的変換には2値画像が必要であり、背景からのオブジェクト形状の抽出には2値画像が必要です。OpenCVを使用すると、画像を2値画像