2013-02-15 34 views
0

我使用opencv,我有一个框架,我可以看到使用imshow()但当我使用imwrite将其保存在磁盘上时,我得到一个黑色图片。无法执行imwrite一个图像,我可以看到与imshow

...... 
// frame *= 1/255; even converting the color before writing it didn't help 
cv::sqrt(frame,frame); 
cv::imwrite("name.tif",frame); 
frame *=1/15.96; 
imshow("frame",frame); //it works fine 
................ 

anyidea为什么它不工作。在此先感谢

+0

您是否使用TIFF格式支持(在CMake选项中)构建?你尝试过其他格式:jpeg,png,bmp ... – Antoine 2013-02-15 10:08:13

+0

是的,我尝试了其他格式,并且保存了其他带有TIFF扩展名的帧并且它可以工作 – Engine 2013-02-15 10:11:35

+0

你的意思是它不起作用吗?它会抛出一个错误,或者你得到一个空白的框架? – 2013-02-15 11:03:21

回答

0

你在这里所做的是,你已经执行了imwrite(),然后在框架上执行一个数学运算,然后执行imshow()。

Ergo,您正在编写和查看2个不同版本的Mat框架。 如果您已验证.tiff扩展名可行,那么sqrt()可能会导致黑框。试试:

cv::sqrt(frame,frame); 

frame *=1/15.96; 

cv::imwrite("name.tif",frame); 
imshow("frame",frame); 

现在你可以确定你在写什么你看到了。如果两者之间仍然存在差异,那么请尝试使用其他图像格式。

相关问题