【发布时间】:2019-11-25 09:46:30
【问题描述】:
如何从预处理图像中去除不规则的白色像素。
我尝试过腐蚀,这会使所有像素变黑。
预处理后:
要求:
我的代码:
Mat img, edges, erode, blurred, element;
element = getStructuringElement(cv::MORPH_RECT, cv::Size(7, 7), cv::Point(-1,-1) );
img = imread("img1925.jpeg"); // read the image
cv::Canny(img, edges, 30, 255, 3); // detect the edges with threshold limit
// cv::erode(edges, erode, element);
GaussianBlur(edges, blurred, cv::Size(7, 7), 0); // blurring
// Rect ROI = boundingRect(blurred); // draw rect for ROI
// Mat src = thresh(ROI);
namedWindow("image", WINDOW_NORMAL);
imshow("image", blurred);
waitKey(0);
return 0;
寻找建议!
【问题讨论】:
-
您可以轻松地使用使像素成为您想要的任何值的功能。如果你有一定的 RGB 间隔值,你可以改变你想要的任何像素: openCvImage.at<:vec3b>(i,j)[0]=0; (i和j是坐标,[0]代表第一层,0是你分配的值。相关主题:stackoverflow.com/questions/23001512/…>
-
不幸的是,我有很多图像,我不确定不规则像素在哪里!所以这个选项不起作用。
-
你所说的“不规则像素”是什么意思
-
预处理步骤后,您可以检查不规则像素的密度,以正确定位您的 roi。
-
这听起来像是一个解决方案。我会调查一下。如果您也能提供一些启发,我将不胜感激!
标签: c++ opencv crop edge-detection image-preprocessing