700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > OpenCV的imwrite或者imshow全白

OpenCV的imwrite或者imshow全白

时间:2024-07-19 09:16:28

相关推荐

OpenCV的imwrite或者imshow全白

我们在使用imshow或者imwrite时,往往会错误的全白的纯色图像。

这是因为,imshow函数在处理时是分情况的,当Mat.type为浮点数时,默认区间为【0,1】,当浮点数大于1时就是白色;当Mat.type为整数时,默认区间为【0,255】。

我们可以从imshow的定义看出来:(highgui.hpp中)

/** @brief Displays an image in the specified window.The function imshow displays an image in the specified window. If the window was created with thecv::WINDOW_AUTOSIZE flag, the image is shown with its original size, however it is still limited by the screen resolution.Otherwise, the image is scaled to fit the window. The function may scale the image, depending on its depth:看这里-。-666- If the image is 8-bit unsigned, it is displayed as is.- If the image is 16-bit unsigned or 32-bit integer, the pixels are divided by 256. That is, thevalue range [0,255\*256] is mapped to [0,255].- If the image is 32-bit or 64-bit floating-point, the pixel values are multiplied by 255. That is, thevalue range [0,1] is mapped to [0,255].If window was created with OpenGL support, cv::imshow also support ogl::Buffer , ogl::Texture2D andcuda::GpuMat as input.If the window was not created before this function, it is assumed creating a window with cv::WINDOW_AUTOSIZE.If you need to show an image that is bigger than the screen resolution, you will need to call namedWindow("", WINDOW_NORMAL) before the imshow.@note This function should be followed by cv::waitKey function which displays the image for specifiedmilliseconds. Otherwise, it won't display the image. For example, **waitKey(0)** will display the windowinfinitely until any keypress (it is suitable for image display). **waitKey(25)** will display a framefor 25 ms, after which display will be automatically closed. (If you put it in a loop to readvideos, it will display the video frame-by-frame)@note[__Windows Backend Only__] Pressing Ctrl+C will copy the image to the clipboard.[__Windows Backend Only__] Pressing Ctrl+S will show a dialog to save the image.@param winname Name of the window.@param mat Image to be shown.*/CV_EXPORTS_W void imshow(const String& winname, InputArray mat);

我们可以用convertTo进行转换,把浮点数转换为整型。

dst0.convertTo(dst0 , CV_8UC1);

我们可以用dst.type()(dst是一个Mat)来显示当前Mat的type。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。