我想了解更多关于如何在图像中标记像素的信息。我想在Caffe中使用算法来提出边缘检测程序。到目前为止,我已经过滤了图像以获得边缘并成功编写代码来检测像素是否是边缘(依赖于其相邻像素)。我现在要做的就是将它们标记为边缘,这样我就可以将它们作为训练数据提供给我的算法。我是C ++和Caffe的初学者。我真正需要的是解释标签是如何工作的人,我会说去每个像素它认为是边缘并给它边缘的值1和非边缘的0?如果是这样我该怎么做?参考和分步指南非常受欢迎,因为我已经在这项任务上苦苦挣扎了一段时间。
好的,例如我达到了这个代码:
Mat pixelComparisonAlg(Mat img){
Mat img_gray;
img_gray = navigateImage(img.clone());
for(int x=0; x < img_gray.cols-1 ; x++){
for(int y=0; y < img_gray.rows-1; y++ ){
Vec3b value1 = img_gray.at<Vec3b>(Point(x+1,y+1));
Vec3b value2 = img_gray.at<Vec3b>(Point(x+1,y));
Vec3b value4 = img_gray.at<Vec3b>(Point(x,y+1));
Vec3b value = img_gray.at<Vec3b>(Point(x,y));
if( value1 != value || value != value2 || value!= value4){
//EDGE!
value.val[0] = 0;
value.val[1] = 0;
value.val[2] = 255;
value1.val[0] = 0;
value1.val[1] = 0;
value1.val[2] = 255;
img_gray.at<Vec3b>(Point(x,y)) = value;
}
else{
value;
}
}
}
return img_gray;
}
int main( int argc, char** argv )
{
Mat img = cv::imread("...", CV_LOAD_IMAGE_COLOR);
if(! img.data){
cout << "could not open or find the image" << endl;
return -1;
}
imshow("edges", pixelComparisonAlg(img.clone()));
cv::waitKey(0);
return 0;
}
有可能将这些像素标记为边缘吗?让我说我把改变边缘颜色的代码改为红色(在if语句之后)修改它以将像素标记为边缘或不。因此,我有一个载有关于像素的信息的向量:颜色(3个向量元素)和标签(1个向量元素)
谢谢