我是 OpenCV 的新手,我已经完成了一个小型 POC,用于从某个 URL 读取图像。
我正在使用视频捕获从 URL 读取图像。代码如下:
VideoCapture vc;
vc.open("http://files.kurento.org/img/mario-wings.png");
if(vc.isOpened() && vc.grab())
{
cv::Mat logo;
vc.retrieve(logo);
cv::namedWindow("t");
imwrite( "mario-wings-opened.png", logo);
cv::imshow("t", logo);
cv::waitKey(0);
vc.release();
}
Run Code Online (Sandbox Code Playgroud)
该图像未正确打开,可能是由于 Alpha 通道所致。保留 alpha 通道并正确获取图像的方法是什么?
任何帮助表示赞赏。
-谢谢
预期产出
实际产量
如果您只加载图像,我建议您使用imread代替,此外,您还需要指定第二个参数imread来加载 alpha 通道,即CV_LOAD_IMAGE_UNCHANGED或cv::IMREAD_UNCHANGED,具体取决于版本(在最坏的情况下为 -1也有效)。
据我所知,该类VideoCapture不加载第四个通道的图像/视频。由于您使用的是 Web url,因此加载图像无法使用imread,但您可以使用任何方法下载数据(例如curl),然后使用imdecode与数据缓冲区来获取cv::Mat. OpenCV 是一个用于图像处理的库,而不是用于下载图像的库。
| 归档时间: |
|
| 查看次数: |
5932 次 |
| 最近记录: |