我有一個realsense SR300,但是當我在OpenCV的窗口中顯示我的深度圖像,它看起來太黑了。我怎樣才能解決這個問題?當我運行真實的例子時,圖像看起來不錯,但這些例子使用OpenGL。但我的項目需要OpenCV。這裏是我的代碼:
int main(int argc, char ** argv)
{
// realsense camera setup
rs::log_to_console(rs::log_severity::warn);
// Create a context object. This object owns the handles to all connected realsense devices
rs::context ctx;
if (ctx.get_device_count() == 0)
{
throw std::runtime_error("No device detected. Is it plugged in?");
}
// Access the first available RealSense device
rs::device * dev = ctx.get_device(0);
// Configure depth to run at VGA resolution at 30 frames per second
dev->enable_stream(rs::stream::depth, 640, 480, rs::format::z16, 30);
rs::intrinsics depth_intrin;
rs::format depth_format;
depth_intrin = dev->get_stream_intrinsics(rs::stream::depth);
depth_format = dev->get_stream_format(rs::stream::depth);
cv::namedWindow("Send Display Image", CV_WINDOW_AUTOSIZE);
/* Set callbacks prior to calling start(). */
auto depth_callback = [depth_intrin, depth_format](rs::frame f)
{
cv::Mat image(cv::Size(640, 480), CV_16UC1,
(void*)f.get_data(), cv::Mat::AUTO_STEP);
cv::imshow("Send Display Image", image);
cv::waitKey(1000/80);
};
/* callback to grab depth fream and publish it. */
dev->set_frame_callback(rs::stream::depth, depth_callback);
// Start streaming
dev->start();
While(1)
{
}
return 0;
}
我不知道爲什麼我的圖像是如此黑暗。我希望它看起來像Kinect的或Xtion當我從ROS運行openni_launch
當我做了「歸一化深度」的步驟,我的新的8位圖像看起來跳動,這意味着,圖像中的所有像素變得很亮,那麼很黑(所有像素的數量相同)。這有點奇怪。大約需要一秒鐘才能變得非常光明,然後再過一秒鐘才能變得非常黑暗,然後重複。你知道那可能是什麼嗎?也許一些自動曝光問題或相機的東西? – Pototo
當我將最大值和最小值設置爲常量時,閃爍消失。當我看着一個靜態物體時沒有閃爍。當事情四處移動時,會發生閃爍。這是有道理的,因爲至少alpha總是在變化。 – Pototo
您應該使用'make_depth_histogram()'來顯示深度圖。它有點花費時間,但可視化只能用於調試目的。 – Catree