首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OpenCV C++中将16位图像转换为8位

如何在OpenCV C++中将16位图像转换为8位
EN

Stack Overflow用户
提问于 2018-07-27 01:35:07
回答 2查看 9.8K关注 0票数 2

我无法使用connectedComponents函数。

代码语言:javascript
复制
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来说已经足够了,但我刚刚意识到我应该输入二进制矩阵:

代码语言:javascript
复制
Mat image_bin(image_th, true);
image_bin.convertTo(image_bin, CV_8U, 0.00390625);

但当我建造的时候,

OpenCV(3.4.2)错误:断言失败.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-27 05:20:01

用另一个函数解决了这个问题。

代码语言:javascript
复制
Mat image_grayscale = image.clone();
image_grayscale.convertTo(image_grayscale, CV_8U, 1 / 256.0);

我猜克隆有问题

票数 6
EN

Stack Overflow用户

发布于 2018-07-27 06:24:14

将8位图像转换为16位图像

代码语言:javascript
复制
image_16bit = image_8bit * 257 ;

16位图像到8位图像

代码语言:javascript
复制
image_8bit = image_16bit / 257 ;

希望这能帮上忙谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51549624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档