Hi I want to use opencv to tell me the pixel values of a blank and white image so the output would look like this
10001
00040
11110
00100
Here is my current code but I'm not sure how to access the results of the CV_GET_CURRENT
call.. any help ?
IplImage readpix(IplImage* m_image) {
cout << "Image width : " << m_image->width << "\n";
cout << "Image height : " << m_image->height << "\n";
cout << "-----------------------------------------\n";
CvPixelPosition8u position;
CV_INIT_PIXEL_POS(position, (unsigned char*)(m_image->imageData), m_image->widthStep, cvSize(m_image->width, m_image->height), 0, 0, m_image->origin);
for(int y = 0; y < m_image->height; ++y) // FOR EACH ROW
{
for(int x = 0; x < m_image->width; ++x) // FOR EACH COL
{
CV_MOVE_TO(position, x, y, 1);
unsigned char colour = *CV_GET_CURRENT(position, 1);
// I want print 1 for a black pixel or 0 for a white pixel
// so i want goes here
}
cout << " \n"; //END OF ROW
}
}
In opencv 2.2, I'd use the C++ interface.
cv::Mat in = /* your image goes here,
assuming single-channel image with 8bits per pixel */
for(int row = 0; row < in.rows; ++row) {
unsigned char* inp = in.ptr<unsigned char>(row);
for (int col = 0; col < in.cols; ++col) {
if (*inp++ == 0) {
std::cout << '1';
} else {
std::cout << '0';
}
std::cout << std::endl;
}
}