Hoffe, Sie können mir helfen. Ich versuche Aruco-Marker zu verwenden, um die Ecken eines Fensters zu finden. Also fügte er jeder Ecke einen Marker hinzu. Aber als ich versucht habe, den Marker zu finden, werden sie nicht gefunden. Wenn es ein Foto mit einem Smartphone macht und dann versucht, den Marker auf dem Foto zu erkennen, funktioniert es. Hier ein minimales funktionierendes Code Beispiel:OpenCv Aruco Marker wird nicht erkannt, wenn ich die Matte direkt analysieren
#include <opencv2/opencv.hpp>
#include <stdlib.h>
#include <string>
#include <opencv2/aruco.hpp>
using namespace cv;
using namespace std;
using namespace aruco;
Dictionary dictionary;
int markerSize = 200;
vector<int> ids;
vector< vector<Point2f> > corners;
Mat addMarkertoImage(const Mat image){
Mat retImage, marker0;
image.copyTo(retImage);
drawMarker(dictionary, 0, markerSize, marker0, 1);
unsigned char value;
//Add marker to top left corner
for(int i = 0; i<marker0.rows; i++)
for(int j = 0; j<marker0.cols; j++){
value = marker0.at<uchar>(i,j);
Vec3b colorValue = Vec3b(value, value, value);
retImage.at<Vec3b>(i,j) = colorValue;}
return retImage;
}
int main(){
Mat image, image_marker;
dictionary = getPredefinedDictionary(cv::aruco::DICT_6X6_250);
image = imread("bild.jpg", 1);
image_marker = addMarkertoImage(image);
detectMarkers(image_marker, dictionary, corners, ids);
drawDetectedMarkers(image_marker, corners, ids);
imshow("Display Image", image_marker);
waitKey(0);
return 0;
}
Irgendwelche Ideen, warum das nicht funktioniert? Aber mit einem Foto von meinem iPhone funktioniert die Kamera?
Es ist unklar, was Ihr Problem ist. Können Sie ein Bild hinzufügen, das nicht funktioniert? – SSteve