cv::Mat at()函数访问像素值时出现负值

Mat中的像素值读出来是负数?

	// 这里我读取的是16bit位深单通道图像depth_img
	cv::Mat img = depth_img;
	for (int i = 0; i < 240; ++i) {
		for (int j = 0; j < 320; ++j) {
			std::cout << "pixel value: " << img.at<short>(i, j) << std::endl;
		}
	}
	system("pause");

出现问题:有的像素值出现负值
cv::Mat at()函数访问像素值时出现负值_第1张图片解决办法
通过查看 opencv at函数API API_at
cv::Mat at()函数访问像素值时出现负值_第2张图片在读取我的这张图像的像素值时应该用上面红色箭头的 ushort

代码修改之后:

	// 这里我读取的是16bit位深单通道图像depth_img
	cv::Mat img = depth_img;
	for (int i = 0; i < 240; ++i) {
		for (int j = 0; j < 320; ++j) {
			std::cout << "pixel value: " << img.at<ushort>(i, j) << std::endl;
		}
	}
	system("pause");

cv::Mat at()函数访问像素值时出现负值_第3张图片

同理,如果你的像素值出现负值,有可能也是对应类型有问题。

你可能感兴趣的:(c++,opencv,开发语言)