2012-07-11 3 views
5

이 코드 라인의 의미는 무엇이며 어떻게이 코드를 javacv로 변환 할 수 있습니까?opencv에서 다음 코드 행의 의미는 무엇입니까?

gray = Scalar::all(255); 

이것은이 코드 라인과 관련된 전체 코드입니다.

Mat src = imread("in.jpg"), gray; 

cvtColor(src, gray, CV_BGR2GRAY); 
threshold(gray, gray, 230, 255, THRESH_BINARY_INV); 
vector<Vec4i> hierarchy; 
vector<vector<Point> > contours; 
findContours(gray, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE); 

gray = Scalar::all(255); 

제발 이것에 대해 설명 할 수 있습니까?

+0

: mWhilte = Scalar.all(255);

는 또한 JavaCV 샘플을 확인? –

+0

이미지에서 등고선을 찾는 데 사용되며이 뒤에 몇 가지 코드가 있습니다. – NadLnk

+2

흰색을 완성하기 위해 회색으로 표시됩니다. cpp 코드를 실행할 수 있으면 실행하고 끝에 회색이 표시됩니다. –

답변

2

로 변환 문제가해서는 안 나는 내 댓글에서 언급 한 바와 같이

Mat::setTo() 방법은 또한, JavaCV에 사용할 수 있어야합니다, 흰색에 회색 이미지를 설정하는 데 사용됩니다.

이점은 무엇입니까? 이 코드가 무엇인지 알고 전체 코드를보아야 만 알 수 있습니다.

Java와 관련하여 OpenCV는 Java 코드를 찾을 수있는 몇 가지 Android 샘플을 제공합니다.

확인할 수 있습니다. I saw a similar function there : 약이 코드를 무엇 http://code.google.com/p/javacv/wiki/OpenCV2_Cookbook_Examples_Chapter_2

2

강조 표시된 코드 행은 회색으로 255를 설정합니다. 행렬을 값으로 설정하기 위해 OpenCV에서 사용할 수있는 방법 중 하나입니다.

gray.setTo(255); // prior to 2.3.1 it was a buggy on multichannel images 
gray = 255; // prior to 2.3.1 it was a buggy on multichannel images 

gray.setTo(Scalar::all(255)); // it works regardless the OpenCV version. 

하지만 문제는 findfContours 후이 소스 라인 ...

이 문서에 따르면, findContours이가 작업 이미지를 수정하는 이유를 생각 : 그것을 할

다른 방법은 (등고선이 추출 될 때까지 등고선을 추출하여 제거한 다음 다음 단계로 진행합니다). 그 결과 가비지 이미지 (아마도 검은 색)가됩니다.

그래서 255 행으로 설정하면 다른 용도로 사용할 수 없게됩니다. 자바

+0

은 0 또는 255입니까? –

+0

간단한 코드 예제를 제공해 주시겠습니까? – NadLnk

관련 문제