如何在Python中使用OpenCV创建Mat矩阵?

2024-10-02 06:30:24 发布

您现在位置:Python中文网/ 问答频道 /正文

显然这条线是错的

matOut = cv2::Mat::Mat(height, width, cv2.CV_8UC4)

这个也是

Mat matOut(height, width, cv2.CV_8UC4)

如何创建具有给定大小、形状和格式的现代openCV空矩阵?最新的openCVdocs on topic似乎没有帮助。。。我直接从那个文档中收集了上面使用的格式。注意:我假设OpenCV(import cv2)Python3、import numpy等等

我想创建一个空矩阵,目的是将内容从不同的缓冲区复制到其中

编辑,更多失败的尝试

matOut = cv2.numpy.Mat(height, width, cv2.CV_8UC4)

matOut = numpy.array(height, width, cv2.CV_8UC4)


Tags: importnumpytopicon格式矩阵widthcv2
1条回答
网友
1楼 · 发布于 2024-10-02 06:30:24

所以USER6969对这个问题提出了一个基本上成功的解决方案。您可以通过以下方式创建新的形状区域:

matOut = numpy.zeros([height, width, 4], dtype=numpy.uint8)

注:我已将所需内容cv2.CV_8UC4替换为其预期响应,即编号4。在一个简单的RGBA像素描述符中有4个8位字节。我更希望OpenCV工具将该响应作为函数调用执行,但这似乎不起作用

我确实想分享我的用例。我最初打算创建一个空的形状矩阵,这样我就可以从一维数组中传输数据。当我解决这个问题时,我意识到有更好的方法。我开始例行程序,在那里我收到了一个包含8位RGBA数据的文件,没有任何前缀元数据。考虑没有任何标题信息的原始BMP

matContent = numpy.frombuffer(fileContent, numpy.uint8) 
matContentReshaped = matContent.reshape(height, width, 4)
cv2.imshow("Display Window", matContentReshaped)
k = cv2.waitKey(0)

就这样。放松点,小豌豆。。。。感谢用户6969和eldesgraciado在此提供帮助

相关问题 更多 >

    热门问题