我試圖從VC++和OpenCV的圖像獲得ROI。 我設法顯示圖像,點擊它時獲取點的座標,將這些座標存儲在矢量中,並在圖像上這些點之間畫線。 這裏是我的代碼:如何從OpenCV獲得點的輪廓
//Includes
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <stdio.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
static int app;
static vector<Point2f> cont(6);
static Mat img = imread("C:/img.jpg",0);
void on_mouse(int, int, int, int, void*);
int main()
{
app = 0;
namedWindow("myWindow", CV_WINDOW_AUTOSIZE);
cvSetMouseCallback("myWindow", on_mouse, 0);
imshow("myWindow", img);
waitKey(0);
}
void on_mouse(int evt, int x, int y, int flags, void* param)
{
if(evt == CV_EVENT_LBUTTONDOWN)
{
Point pt(x,y);
if(app<6)
{
cont[app]=pt;
app++;
}
cout<<"Coordonnees du point pt : "<<x<<","<<y<<endl;
for (int i=0; i<6;i++)
{cout<<cont[i]<<endl;}
}
if(evt == CV_EVENT_RBUTTONDOWN)
{
for (int j=0;j<5;j++)
{
line(img,cont[(j)],cont[(j+1)],CV_RGB(255,0,0),2);
}
line(img,cont[(5)],cont[(0)],CV_RGB(255,0,0),2);
imshow("myWindow", img);
}
}
我想獲得的是包含輪廓的所有點的座標,並最終bianary矩陣我的形象,它包含0,如果像素大小的矢量不在輪廓,其他1. 感謝您的幫助。
用'的contour'的所有點的座標,什麼是你的目標是什麼?爲什麼你需要他們,因爲你有所有的角點和所有其他的點線? –