Estoy tratando de encontrar las esquinas en una imagen, no necesito los contornos, solo las 4 esquinas. Cambiaré la perspectiva usando 4 esquinas.Cómo encontrar esquinas en una imagen usando OpenCv
Estoy usando Opencv, pero necesito saber los pasos para encontrar las esquinas y qué función usaré.
Mis imágenes serán así: (sin puntos rojos, voy a pintar los puntos después)
Editado:
Después de los pasos sugeridos, que writed el código: (Nota: Estoy no usando OpenCv puro, estoy usando javaCV, pero la lógica es la misma).
// Load two images and allocate other structures (I´m using other image)
IplImage colored = cvLoadImage(
"res/scanteste.jpg",
CV_LOAD_IMAGE_UNCHANGED);
IplImage gray = cvCreateImage(cvGetSize(colored), IPL_DEPTH_8U, 1);
IplImage smooth = cvCreateImage(cvGetSize(colored), IPL_DEPTH_8U, 1);
//Step 1 - Convert from RGB to grayscale (cvCvtColor)
cvCvtColor(colored, gray, CV_RGB2GRAY);
//2 Smooth (cvSmooth)
cvSmooth(gray, smooth, CV_BLUR, 9, 9, 2, 2);
//3 - cvThreshold - What values?
cvThreshold(gray,gray, 155, 255, CV_THRESH_BINARY);
//4 - Detect edges (cvCanny) -What values?
int N = 7;
int aperature_size = N;
double lowThresh = 20;
double highThresh = 40;
cvCanny(gray, gray, lowThresh*N*N, highThresh*N*N, aperature_size);
//5 - Find contours (cvFindContours)
int total = 0;
CvSeq contour2 = new CvSeq(null);
CvMemStorage storage2 = cvCreateMemStorage(0);
CvMemStorage storageHull = cvCreateMemStorage(0);
total = cvFindContours(gray, storage2, contour2, Loader.sizeof(CvContour.class), CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE);
if(total > 1){
while (contour2 != null && !contour2.isNull()) {
if (contour2.elem_size() > 0) {
//6 - Approximate contours with linear features (cvApproxPoly)
CvSeq points = cvApproxPoly(contour2,Loader.sizeof(CvContour.class), storage2, CV_POLY_APPROX_DP,cvContourPerimeter(contour2)*0.005, 0);
cvDrawContours(gray, points,CvScalar.BLUE, CvScalar.BLUE, -1, 1, CV_AA);
}
contour2 = contour2.h_next();
}
}
lo tanto, quiero encontrar los cornes, pero yo no sé cómo usar esquinas funcionan como cvCornerHarris y otros.
de OpenCV "esquina" funciones no se encuentran en las esquinas de la manera que está pensando - En términos generales, encuentran áreas con una variación horizontal y vertical significativa. El objetivo de las funciones de esquina en OpenCV es encontrar partes distintivas de la imagen que serán útiles para el seguimiento visual, que no es necesariamente lo que comúnmente consideramos como esquinas. –
El código exacto en http://stackoverflow.com/a/14368605/1832154 (excepto la parte de redimensionamiento, ya que su imagen ya es lo suficientemente pequeña) da http://i.imgur.com/hMdAlHX.png – mmgp