Iがスロー処理された画像を有している:私は(白と黒の点の数量を計算する)線にbelowsのそのを分析するよりOpenCVのマット画像データ構造
//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);
。たとえば、画像が100x120px
で、ラインをチェックしたい場合は、x = 5
とy = from 0 to 119
です。逆の場合はx = 0..99; y = 5
となります。
だから、Mat
にはx - Mat.cols
とy - Mat.rows
が含まれていますが、別の方法でデータが保存されているようです。例えば私はラインにbelowsのピクセルの色を変更しようとしたが、2行取得できませんでした:白画像用の
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];
結果を:
私は2を取得しdid't理由ライン? Mat
に\ check行を直接描画することはできますか? y = kx + b
で計算した行をチェックするとどうなりますか?