我想知道下面的代码中存在什么问题,因为它只能以灰度图像的一部分显示为二进制图像!在OpenCV中将灰度图像转换为二进制图像
cv::Mat gry = cv::imread("image_gray.jpg");
cv::Mat bin(gry.size(), gry.type());
for (int i=0; i<gry.rows ;i++)
{
for (int j=0; j<gry.cols ;j++)
{
if (gry.at<uchar>(i,j)>=100)
bin.at<uchar>(i,j)=255;
else
bin.at<uchar>(i,j)=0;
}
}
cv::namedWindow("After", cv::WINDOW_AUTOSIZE);
cv::imshow("After",bin);
waitKey(0);
cvDestroyWindow("After");
imwrite("binary_image.bmp", bin);
你有没有考虑原来的像素值只需使用'Mat bin = gray> = 100;'?可能要快得多,更干净。 – 2014-09-06 17:19:18
[将OpenCV图像转换为黑白图像]可能的副本(http://stackoverflow.com/questions/7624765/converting-an-opencv-image-to-black-and-white) – Basilevs 2014-09-06 17:19:43
非常感谢您的支持答案lwillnotexist Idonotexist但我是一名学生,我的老师想要一步一步做到这一点:( – 2014-09-06 17:51:01