Ich habe ein Bild, das throw verarbeitet wurde:OpenCV Mat Bilddatenstruktur
//UIImage to Mat
cv::Mat originalMat = [self cvMatFromUIImage:inputImage];
//Grayscale
cv::Mat grayMat;
cv::cvtColor(originalMat, grayMat, CV_RGB2GRAY);
//Blur
cv::Mat gaussMat;
cv::GaussianBlur(grayMat , gaussMat, cv::Size(9, 9), 2, 2);
//Threshold
cv::threshold(grayMat,tMat,100,255,cv::THRESH_BINARY);
als ich (berechnen Menge der weißen und schwarzen Punkte), die Linie BELOWS analysieren möchten. Zum Beispiel: Ich habe ein Bild 100x120px
und ich möchte Zeilen überprüfen, wo x = 5
und y = from 0 to 119
; und umgekehrt x = 0..99; y = 5
;
so erwarte ich, dass enthält x - Mat.cols
und y - Mat.rows
aber sieht es Daten auf eine andere Weise speichert. zum Beispiel habe ich versucht, Pixel, Farbe zu ändern, die auf Linien BELOWS aber nicht 2 Zeilen bekommen haben:
for(int x = 0; x < tMat.cols; x++){
tMat.at<cv::Vec4b>(5,x)[0] = 100;
}
for(int y = 0; y < tMat.rows; y++){
tMat.at<cv::Vec4b>(y,5)[0] = 100;
}
return [self UIImageFromCVMat:tMat];
Ergebnis für Weiß-Bild:
warum ich did't 2 erhalten Linien? Ist es möglich, Linien in Mat
direkt zu zeichnen? Was passiert, wenn ich die Linie überprüfe, die über y = kx + b
berechnet?