2014-11-08 53 views
0

JavaCV中的阈值图像使用javaCV中的相机对图像进行阈值处理

我按照几个步骤阈值使用相机拍摄的图像。但是一半的图像变成黑色。我尝试了几种类型的阈值算法,而不是它们的工作。 我用于阈值化的代码在下面给出,

cvCvtColor(src, colorDst, CV_GRAY2BGR); 
cvThreshold(colorDst, threshold, 155, 255, CV_THRESH_BINARY); 
//cvThreshold(colorDst, threshold, 155, 255, CV_THRESH_OTSU); // code didnt work in javaCV 

是否有这将阈值适当地其使用摄像机拍摄的整个图像的任何算法?

原始图像

http://imgur.com/iGfWjFa

阈值的图像

http://imgur.com/RIZdIfz

回答

0

阈值= 155太高为这个图象 - 右侧是暗,因此变成黑色。
最佳值约为120(例如,您可以使用GIMP Color Picker找到它)。

如果您希望自动计算阈值,请使用THRESH_OTSU或THRESH_TRIANGLE。不要使用BGR图像,此功能仅适用于灰度图像。

如果阈值这个图像作为使用三角算法将得到的阈值的灰度一个= 117和图像将被适当地进行阈值(代码的OpenCV-3.0b中):

Mat src = Imgcodecs.imread("res/test.jpg", Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE); 
Mat dst = new Mat(); 
double threshold = Imgproc.threshold(src, dst, 0, 255, Imgproc.THRESH_TRIANGLE); 
Imgcodecs.imwrite("res/out.jpg", dst); 
System.out.println(threshold); // 117 

src.jpg out.jpg