【发布时间】:2017-03-04 09:57:26
【问题描述】:
我有一张经过处理的图像 throw:
//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,但看起来它以另一种方式保存数据。例如,我尝试将低于线条的像素颜色更改为线条但没有得到 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 行?是否可以直接在Mat 中绘制\检查线?如果我要检查通过y = kx + b 计算的行怎么办?
【问题讨论】:
标签: objective-c xcode opencv image-processing