2012-07-11 31 views
5

¿Qué significa esta línea de código y cómo puedo convertir este código en javacv?¿Cuál es el significado de la siguiente línea de código en opencv?

gray = Scalar::all(255); 

Éste es todo el código relacionado con esta línea de código.

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); 

¿Puede alguien explicar al respecto?

+0

lo que es el código acerca? –

+0

Se usa para encontrar contornos en la imagen y también hay algunos códigos después de esto – NadLnk

+2

Creo que esa línea hace que el gris se complete en blanco. Si puede ejecutar código cpp, ejecútelo y muestre gris al final. –

Respuesta

2

Como ya he mencionado en mi comentario, que se utiliza para establecer la imagen de gris a blanco.

¿Cuál es su beneficio? Solo se puede decir si sabemos para qué sirve este código o si vemos el código completo.

En cuanto a Java, OpenCV tiene ahora algunas muestras de Android, en las que puede encontrar códigos Java.

Puede verificarlos. I saw a similar function there: mWhilte = Scalar.all(255);

También puedes ver las muestras JavaCV: http://code.google.com/p/javacv/wiki/OpenCV2_Cookbook_Examples_Chapter_2

2

La línea de código resaltada establece el gris en 255. Es uno de los métodos disponibles en OpenCV para establecer una matriz en un valor.

Otras maneras de hacerlo son:

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. 

pero creo que la pregunta es por qué esta línea de origen después de findfContours ...

De acuerdo con los documentos, findContours modifica la imagen que se está trabajando en (extrae un contorno, lo detele, luego pasa al siguiente, hasta que no haya más contornos). El resultado es una imagen basura (probablemente negra).

Por lo tanto, la línea set-to-255 la borra para otro uso.

El método Mat::setTo() también debe estar disponible en JavaCV, por lo que no debería tener problemas para convertir a Java

+0

¿es 0 o 255? –

+0

Por favor, ¿puedes dar un ejemplo de código simple para esto? – NadLnk

Cuestiones relacionadas