简体   繁体   English

Opencv-从数组创建Mat

[英]Opencv - Create Mat from array

I try to create mat object from uchar* . 我尝试从uchar *创建mat对象。 I could not find a useful conversion. 我找不到有用的转换。 My code is below ; 我的代码如下;

uchar* urgbImg; // this value is created another function

Mat img_argb(HEIGHT, WIDTH, CV_8UC4, urgbImg);
Mat img_rgb(HEIGHT, WIDTH, CV_8UC3);
img_argb.convertTo(img_rgb, CV_8UC3);


cv::imwrite("RGB.png", img_rgb);

QImage img1(urgbImg, WIDTH, HEIGHT, QImage::Format_ARGB32);
QImage img2 = img1.convertToFormat(QImage::Format_RGB32);

QFile file2(QString::fromStdString("QRGB.png"));
file2.open(QIODevice::WriteOnly);
img2.save(&file2,"PNG",100);
file2.close();

QRGB file is a fine result but not RGB file. QRGB文件是一个很好的结果,但不是RGB文件。 I have uchar array so it is 8 bit. 我有uchar数组,所以它是8位。

I tried CV_8UC3(without conversion from CV_8UC4), CV_32SC3 and CV_32SC4. 我尝试了CV_8UC3(未从CV_8UC4转换),CV_32SC3和CV_32SC4。 All result are bad. 所有结果都是不好的。 How can I create rgb image from uchar* ? 如何从uchar *创建rgb图像?

convertTo() don't convert a CV_8UC4 image to CV_8UC3 convertTo()不要将CV_8UC4图像转换为CV_8UC3

you should use cvtColor() function 您应该使用cvtColor()函数

Mat img_argb(HEIGHT, WIDTH, CV_8UC4, urgbImg);
Mat img_rgb;
cvtColor(img_argb,img_rgb,COLOR_BGRA2BGR);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM