Quantcast
Viewing all articles
Browse latest Browse all 19555

Transform buffer to cv::Mat without copy.

I try to convert buffered data in cv::Mat (it's originaly to make a python binding numpy array to cv::Mat) in python when we do channel slicing the internal strides in "simply" set to 3 instead of 1 (there is no copy) a = eb.read_image("test.png") b=a[:,:,0] so b is not continuous In full opencv C++, it's equivalente to try to get only one channel from a CV_8UC3 image. I try this but it don't seem to work as I think cv::Mat image_from_file = cv::imread("test.png", CV_LOAD_IMAGE_COLOR); cv::Mat image_transform = cv::Mat(cv::Size(image_from_file.cols, image_from_file.rows), CV_8UC1, // output type one channel image_from_file.data, // buffered data image_from_file.elemSize()*image_from_file.cols*3 // total byte size of one rows ); cv::imshow("image_split_channel_from_buffer", image_transform); cv::waitKey(0); the other interface with step parameter give me the same result : cv::Mat::Mat ( int ndims, const int * sizes, int type, void * data, const size_t * steps = 0 )

Viewing all articles
Browse latest Browse all 19555

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>