DepthImage to Mat (OpenCV)
I am working with a 3d camera that provides a depthimage which is encoded in 32FC1 I need the image in OpenCV format (Mat) in order to access each component as a matrix. I am working on a ROS system, so I receive the image in ROS format.
The problem is that when I have done the transformation, I try to access the Matrix data with Mat::at but I can not see real values. I don't know where the problem is.
Here is my code:
cv_bridge::CvImagePtr cv_ptr;
try{
cv_ptr = cv_bridge::toCvCopy(pdepth);
}
catch (cv_bridge::Exception& e){
ROS_ERROR("cv_bridge exception: %s", e.what());
return;
}
for(uint col = 0; col < 800; col++){
float d = 8.0;
for(uint pix = 0; pix < 300; pix++){
if (cv_ptr->image.at<float>(pix,col) < 32/(0.45814893-0.001529713*pix)) d = cv_ptr->image.at<float>(pix,col);
How does your image look like? Are you sure that your image is a float image? (e.g. is cv_ptr->image.type() == CV_32FC1 ). Of which datatype is pdepth? You also should avoid to hard code image sizes and better write the iteration as
so that you can use your code also with other image sizes. Also the variable name "pix" is really confusing as it should be 'row'.