OpenCV Q&A Forum - RSS feedhttp://answers.opencv.org/questions/OpenCV answersenCopyright <a href="http://www.opencv.org">OpenCV foundation</a>, 2012-2018.Tue, 17 Oct 2017 04:57:47 -0500How to calculate the median of pixel values in opencv (python)http://answers.opencv.org/question/176494/how-to-calculate-the-median-of-pixel-values-in-opencv-python/ I want to get an image matrix of a still image and then calculate the median of that matrix for some purpose. Can you help me how to do so?AsadTue, 17 Oct 2017 04:57:47 -0500http://answers.opencv.org/question/176494/Fast adjacency matrix computation from watershedhttp://answers.opencv.org/question/15348/fast-adjacency-matrix-computation-from-watershed/I would like to know if there is a faster way, than what I have done below, to compute the region adjacency matrix from a watershed image.
Input: watershed image with N regions labeled from 1 to N.
Output: adjacency matrix of these N regions.
**1. For each region, compute the corresponding mask and put all masks into a vector:**
vector<Mat> masks;
for(int i = 0; i < N; i++ )
{
// Create the corresponding mask
Mat mask;
compare(wshed, i+1, mask, CMP_EQ);
// Dilate to overlap the watershed line (border)
dilate(mask, mask, Mat());
// Add to the list of masks
masks.push_back(mask);
}
**2. Define a function to check if two regions are adjacent:**
bool areAdjacent(const Mat& mask1, const Mat& mask2)
{
// Get the overlapping area of the two masks
Mat m;
bitwise_and(mask1, mask2, m);
// Compute the size of the overlapping area
int size = countNonZero(m);
// If there are more than 10 (for example) overlapping pixels, then the two regions are adjacent
return (size > 10);
}
**3. Compute the adjacency matrix M:** if the i-th region and the j-th region are adjacent, then M[i][j] = M[j][i] =1, otherwise they are equal to 0.
Mat M = Mat::zeros(N, N, CV_8U);
for(int i = 0; i < N-1; i++)
{
for(int j = i+1; j < N; j++)
{
if(areAdjacent(masks[i], masks[j]))
{
M.at<uchar>(i,j) = 1;
M.at<uchar>(j,i) = 1;
}
}
}
return M; NesbitTue, 18 Jun 2013 10:16:02 -0500http://answers.opencv.org/question/15348/