如何在opencv中转换图像深度(CV_8UC3)? #包括“stdafx.h” #包括“opencv2/highgui/highgui.hpp” #包括“opencv2/imgproc/imgproc.hpp” #包括 使用名称空间cv; 使用名称空间std; int main(int argc,字符**argv){ Mat img=imread(“Nature.jpg”);//从文件中读取图像 Mat img_Chin; img.convertTo(img_chn,CV_16UC3); imshow(“更改的图像”,img_chn);//显示更改的图像 imshow(“原始图像”,img);//显示原始图像 waitKey(0);//等待用户按某个键 返回0; }
当我运行此代码时,我在更改的图像窗口中看到黑屏。如果我写的是如何在opencv中转换图像深度(CV_8UC3)? #包括“stdafx.h” #包括“opencv2/highgui/highgui.hpp” #包括“opencv2/imgproc/imgproc.hpp” #包括 使用名称空间cv; 使用名称空间std; int main(int argc,字符**argv){ Mat img=imread(“Nature.jpg”);//从文件中读取图像 Mat img_Chin; img.convertTo(img_chn,CV_16UC3); imshow(“更改的图像”,img_chn);//显示更改的图像 imshow(“原始图像”,img);//显示原始图像 waitKey(0);//等待用户按某个键 返回0; },opencv,Opencv,当我运行此代码时,我在更改的图像窗口中看到黑屏。如果我写的是CV_8UC3而不是CV_16UC3,那么就不会发生问题 我的目的是将8位图像转换为16位图像,我应该怎么做?此行为是正确的 img\u chn已正确初始化,您无法看到它,因为它将CV\u 16U图像除以256,因此图像将显示为黑色(因为img\u chn中的所有值都是此行为是正确的 img_chn已正确初始化,您无法看到它,因为它会将CV_16U图像除以256,因此您的图像将显示为黑色(因为img_chn中的所有值都是谢谢,如果您想转
CV_8UC3
而不是CV_16UC3
,那么就不会发生问题
我的目的是将8位图像转换为16位图像,我应该怎么做?此行为是正确的
img\u chn
已正确初始化,您无法看到它,因为它将CV\u 16U图像除以256,因此图像将显示为黑色(因为img\u chn
中的所有值都是此行为是正确的
img_chn
已正确初始化,您无法看到它,因为它会将CV_16U图像除以256,因此您的图像将显示为黑色(因为img_chn
中的所有值都是谢谢,如果您想转换为32位,那么必须在这个中写入什么?img.convertTo(img_chn,CV_16UC3,#35; 35;);如果您指的是浮点值CV_32F,则需要将这些值设置为[0,1],因此img.convertTo(img_chn,CV_32F,1.0/255.0)
;@Berkay适当的图像为8U、16U或32F,imshow scales仅正确显示这些格式。显然,您可以有一个32S的矩阵,但需要进行转换(适当的缩放)请按上述格式之一正确显示。@Berkay如果此问题回答了您的原始问题,请接受它。如果您还有与此问题无关的其他问题,请创建一个新的答案。如果您对此答案不满意,请告诉我谢谢,如果您想转换为32位,您必须在这个?img.conv中写什么ertTo(img_chn,CV_16UC3,####),如果你是指浮点值CV_32F,你需要这些值在[0,1]中,因此img.convertTo(img_chn,CV_32F,1.0/255.0)
@Berkay正确的图像是8U,16U或32F,并且imshow比例仅正确显示这些格式。显然,你可以有一个32S的矩阵,但你需要转换(以适当的比例)请按上述格式之一正确显示。@Berkay如果此问题回答了您的原始问题,请接受。如果您还有与此问题无关的其他问题,请创建一个新的答案。如果您对此答案不满意,请告诉我
#include "stdafx.h"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv){
Mat img = imread("Nature.jpg"); // Read image from file
Mat img_chn;
img.convertTo(img_chn,CV_16UC3);
imshow("Changed image", img_chn); //show the changed image
imshow("Original İmage", img); //show the original image
waitKey(0); // Wait until user press some key
return 0;
}
img.convertTo(img_chn,CV_16UC3, 256);