我坚持使用connectedComponents
函数。
const uint16_t* depth_frame_data = (const uint16_t*)(rs2_get_frame_data(frame, &e));
Mat image(Size(WIDTH, HEIGHT), CV_16UC1, (void *)depth_frame_data, Mat::AUTO_STEP);
threshold(image, image_th, one_meter, 255, THRESH_BINARY_INV);
我认为这对connectedComponents
就足够了,但是我刚刚意识到我应该输入二进制Matrix:
Mat image_bin(image_th, true);
image_bin.convertTo(image_bin, CV_8U, 0.00390625);
但是当我构建它时,
OpenCV(3.4.2)错误:声明失败...
对我有什么建议吗? 我正在使用英特尔GPU。
答案 0 :(得分:2)
使用其他功能解决了该问题。
Mat image_grayscale = image.clone();
image_grayscale.convertTo(image_grayscale, CV_8U, 1 / 256.0);
猜测克隆存在问题
答案 1 :(得分:0)
要将8位图像转换为16位图像
<?xml version="1.0" encoding="utf-8"?>
适用于16位图像到8位图像
image_16bit = image_8bit * 257 ;
我希望这会有所帮助,谢谢。