OpenCV 从标准输入加载图像/视频

2023-12-01

我正在尝试使用以下代码从 stdin 读取 jpg 图像:

int c,count=0;
vector<uchar> buffer; //buffer for coding

/* for stdin, we need to read in the entire stream until EOF */
while ((c = fgetc(stdin)) != EOF) {
     buffer.push_back(c);
 count++;
}


cout << "Bytes: " << count << endl;
Mat im = imdecode(Mat(buffer),CV_LOAD_IMAGE_COLOR);
cout << "Decoded\n";
namedWindow("image", CV_WINDOW_AUTOSIZE);
imshow("image",im);

cv::waitKey(0);

我在cmd中运行这个:

OpenCVTest < thumb.jpg

这就是我得到的:

Bytes: 335
Decoded
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in unknown function, file ..\..\..\src\opencv\modules\core\src\array.cpp, line 2482

该错误似乎是合理的,因为图像约为 7 KB,但根据计数器仅读取了 335 字节。

我究竟做错了什么 ?

我的最终目标是从标准输入逐帧读取视频。这可能吗?

非常感谢 !


下面从 stdin 逐帧读取 jpeg 序列。例子:

ffmpeg

ffmpeg -i input.mp4 -vcodec mjpeg -f image2pipe -pix_fmt yuvj420p -r 10 -|program.exe

mencoder

mencoder input.mp4 -nosound -ovc lavc -lavcopts vcodec=mjpeg -o -|program.exe

curl

curl "http://10.10.201.241/mjpeg/video.cgi&resolution=320x240"|program.exe

code

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

#if defined(_MSC_VER) || defined(WIN32)  || defined(_WIN32) || defined(__WIN32__) \
    || defined(WIN64)    || defined(_WIN64) || defined(__WIN64__)
# include <io.h>
# include <fcntl.h>
# define SET_BINARY_MODE(handle) setmode(handle, O_BINARY)
#else
# define SET_BINARY_MODE(handle) ((void)0)
#endif

#define BUFSIZE 10240
int main ( int argc, char **argv )
{

    SET_BINARY_MODE(fileno(stdin));
    std::vector<char> data;
    bool skip=true;
    bool imgready=false;
    bool ff=false;
    int readbytes=-1;
    while (1)
    {   
        char ca[BUFSIZE];
        uchar c;
        if (readbytes!=0)
        {
            readbytes=read(fileno(stdin),ca,BUFSIZE);
            for(int i=0;i<readbytes;i++)
            {
                c=ca[i];
                if(ff && c==(uchar)0xd8)
                {
                    skip=false;
                    data.push_back((uchar)0xff);
                }
                if(ff && c==0xd9)
                {
                    imgready=true;
                    data.push_back((uchar)0xd9);
                    skip=true;
                }
                ff=c==0xff;
                if(!skip)
                {
                    data.push_back(c);
                }
                if(imgready)
                {
                    if(data.size()!=0)
                    {
                        cv::Mat data_mat(data);
                        cv::Mat frame(imdecode(data_mat,1));

                        imshow("frame",frame);
                        waitKey(1);
                    }else
                    {
                        printf("warning");
                    }
                    imgready=false;
                    skip=true;
                    data.clear();
                }
            }
        }
        else
        {
            throw std::string("zero byte read");
        }
    }
}    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV 从标准输入加载图像/视频 的相关文章

  • 检测骰子的上侧

    是否可以检测骰子的上面 虽然从顶部看这将是一项简单的任务 但从许多角度来看 可以看到多个侧面 Here is an example of a dice feel free to take your own pictures 您通常想知道自己
  • 从索贝尔确定图像梯度方向?

    我正在尝试使用 openCV 的 Sobel 方法的结果来确定图像梯度方向 我知道这应该是一个非常简单的任务 我从此处复制了许多资源和答案中的方法 但无论我做什么 所得方向始终在 0 57 度之间 我希望范围为 0 360 我相信所有的深度
  • OpenCV 中“IplImage”和“CvMat”的全称是什么?

    有一个IplImage and CvMat在 OpenCV 中 他们的全名是什么 IPL in IplImage代表英特尔处理库 这是Intel维护OpenCV时的残余 CV in cvMat代表计算机视觉矩阵 这是图形中常用的数据结构 I
  • OpenCV:视频录制太快

    我有一个简单的录像机 录制来自网络摄像头的视频 theVideoWriter open filename countAsString ext CV FOURCC X V I D 30 Size 1920 1080 true while re
  • 如何使用Java OpenCV

    我正在使用图像处理开始我的最后一年项目 并希望完成类似的事情this http www youtube com watch v EPai5f2sWaA 它是人体和物体检测的结合 我真的很想用 Java 来做 因为我在 C 方面的经验很少 I
  • 如何将图像从 np.uint16 转换为 np.uint8?

    我正在创建一个图像 image np empty shape height width 1 dtype np uint16 之后我将图像转换为 BGR 模型 image cv2 cvtColor image cv2 COLOR GRAY2B
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • 从 2 个摄像头捕获(OpenCV、Python)[重复]

    这个问题在这里已经有答案了 所以我试图从 openCV 中的两个摄像头 python 和 windows 7 进行捕获 我用一台相机拍摄的效果很好 你也会注意到我正在对图像做一些时髦的事情 但这并不重要 这是尝试使用两个的代码 import
  • OpenCV Android - 无法解析相应的JNI函数

    我正在尝试按照此处概述的本教程使用 Opencv 设置 Android Studio https www youtube com watch v OTw GIQNbD8 https www youtube com watch v OTw G
  • 使用 cv2 在 python 中创建多通道零垫

    我想用 cv2 opencv 包装器在 python 中创建一个多通道 mat 对象 我在网上找到了一些例子 其中 c Mat zeros 被 numpy zeros 替换 这看起来不错 但似乎没有多通道类型适合 看代码 import cv
  • 使用 OpenCV VideoWriter 将 RTSP 流存储为视频文件

    我正在使用 OpenCV 开发一个 Python 模块 该模块连接到 RTSP 流以对视频执行一些预处理 主要是降低 fps 和分辨率 然后将其存储在文件系统中 但是 即使在尝试了几种编解码器 寻找类似的开发之后 我总是得到一个空的视频 我
  • 使用 SURF 在检测到的对象周围绘制矩形

    我正在尝试从涉及冲浪检测器的以下代码中检测对象 我不想绘制匹配项 我想在检测到的对象周围绘制一个矩形 但不知何故我无法获得正确的单应性 请任何人指出在哪里我走错了 include
  • 基本的 Python OpenCV 裁剪和调整大小

    有人可以帮我一些裁剪算法吗 它的 openCV 我想弄清楚这一点 我知道方法是crop image y y1 x x1 如果我有一个带有 new dimensionXxnew dimensionY 像素的图像 并且我想将其裁剪为相同的宽度
  • python openCV 中的人口普查变换

    我开始在一个与立体视觉相关的项目中使用 openCV 和 python 我找到了关于使用 openCV 在 C 中进行人口普查转换的文档页面 link http docs opencv org 3 1 0 d2 d7f namespacec
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • opencv - 在图像中绘制轮廓

    我正在尝试在图像周围绘制轮廓 我可以看到找到了轮廓 但无法绘制轮廓 轮廓的颜色似乎是两种 黑色和白色 颜色中的一种 import cv2 import numpy as np import matplotlib pyplot as plt
  • OpenCV RGB转灰度

    我正在做一个视频监控项目 我看不到从 RGB 到灰度的转换 我为灰色设置了黑色窗口 你能帮我解决这个问题吗 附代码 另外 如何获得当前帧和前一帧之间的差异 多谢 宜兰 include stdafx h include
  • OpenCV:RGB 到 YUV 转换,并显示维基百科等通道

    我一直在寻找这种转换有一段时间了 在Linux上使用Python将RGB图像转换为YUV图像并访问Y U和V通道有哪些方法 使用 opencv skimage 等 更新 我用的是opencv img yuv cv2 cvtColor ima

随机推荐

  • 通过 postValidate 进行 JSF 跨字段验证,无需在支持 bean 中按名称查找组件

    我正在构建一个登录表单复合组件 使用它的页面将传递一个事件处理程序来验证用户名和密码 通常 不使用复合组件 当我们通过以下方式执行跨字段验证时postValidate 事件处理程序必须按名称查找字段的组件 验证器最好不要这样做 因为这些是应
  • 使用 Locust 每秒预定义请求数

    在查看负载测试工具时 我发现了 Locust 并立即发现它对于 Python 爱好者来说很有吸引力 但我不完全确定我是否可以用它实现以下场景 我的任务是使用真实流量对 REST API 进行负载测试 我从生产 Apache 日志中提取了 5
  • Html Agility Pack - 循环行和列

    如何循环遍历具有属性 id 或名称的表和行 以获取每个 td 单元格深处的内部文本 我从事 asp net c 和最新的 html 敏捷包方面的工作 请指导 谢谢 一个 html 文件有几个表 其中之一具有属性 id main part 在
  • Python 中的匹配模式

    我有一个 XML 文件 其中包含以下字符串
  • numberOfSectionsInTableView 不起作用

    import UIKit class exploreViewController UIViewController UITableViewDelegate UITableViewDataSource IBOutlet weak var se
  • 从 VBScript 中的函数返回引用

    我对 VBScript 已经抓狂了 我到底如何才能将引用作为函数的返回值传递 目前我的代码如下所示 Set objUser FindUser bendert REM Searches Directory for the User Funct
  • RequireJS 有时无法加载 jQuery

    我的项目结构如下 root lib js 在我的 js 文件夹中 我有一个 require config 文件 它引用 lib 目录中的 javascript 文件 就像这样 require config paths jquery lib
  • 使用 sed 移动文本文件中的匹配行

    我正在尝试关注该帖子 如何使用正则表达式匹配 bash 脚本 将文件中的特定行移动到另一个位置 到我的示例文件 asdasd0 SRC OUT DIR a b c d e f g h asdasd2 asdasd3 asdasd4 DEFA
  • ASP.NET 5 客户端依赖管理 - Bower

    我正在尝试使用 MVC 6 的新 ASP NET 5 并且使用 Bower 来管理所有客户端依赖项 一切正常 但我有一个问题 当我添加依赖项时 假设是 jQuery 它添加了 dist and src以及 Bower 配置文件 lib的文件
  • 如何获取模板中 Meteor.call 函数的结果

    我正在尝试制作一个在 Meteor 客户端中使用的分页功能 因此我需要知道服务器上的记录数 在服务器上 在 server bootstrap coffee 中 我有以下代码 Meteor methods ContactsCount gt C
  • 未使用 JavaScript 正确设置 Internet Explorer cookie

    我正在尝试保存 恢复回发上的滚动位置 我的代码适用于 Firefox 和除 Internet Explorer 之外的所有主要浏览器 function saveScrollPosition Save the cookie if the re
  • PHP通过html标签分解字符串

    假设字符串 a 成立 p Phasellus blandit enim eget odio euismod eu dictum quam scelerisque p p Sed ut diam nisi p p Ut vestibulum
  • ssis 中的参数绑定

    如何使用执行包任务动态地将值传递给子包变量 我需要同时从另一个包 父包 调用一个包 子包 在每次调用中 我都需要将不同的值传递给子包变量 I have tried using parameter bindings in Execute Pa
  • 如何让 Phoenix 监听 IPv6?

    我正在努力寻找有关让 Phoenix 以及 Cowboy 和 Ranch 同时监听 IPv4 和 IPv6 的信息 我在 Ubuntu 16 04 的 VPS 上运行 它同时具有 IPv4 和 IPv6 地址 跑步时netstat tulp
  • 在单独的线程中关闭相机设备

    我正在使用 Android Camera2 创建自定义相机 cameraDevice close 方法速度很慢 并且会使 UI 冻结 1 秒 我把它放在另一个线程中 看起来效果很好 我想知道这是否会导致一些严重的问题以及是否有其他方法可以实
  • omp_set_num_threads(1) 比没有 openmp 慢的原因

    相信大家都同意这篇文章的标题 有人能指出我的原因吗 有没有参考书之类的 我试图找到但没有运气 我相信原因是 openmp 有同步开销 没有 openmp 项目没有 希望有人能进一步扩展原因吗 Thanks 虽然即使只有一个线程 使用 Ope
  • BigQuery:如何将库加载到java代码中

    我是 Bigquery 的新开发人员 我正在遵循教程https developers google com bigquery bigquery api quickstart带有 Java 代码和导入的库https developers go
  • JVM是否保证缓存非易失性变量?

    JVM是否保证缓存非易失性变量 程序员是否可以依赖 JVM 始终在本地为每个线程缓存非易失性变量 或者 JVM 可能会也可能不会这样做 因此程序员不应该依赖 JVM 来做到这一点 感谢您提前的答复 不 JVM 不保证非易失性字段的 缓存 J
  • Gremlin - 随机选择一项

    将我视为 用户 1 查询的目的是获取我关注的人 发布 的帖子 并对每个帖子进行检查 是否已被我喜欢过 我关注的其他人是否喜欢它 如果是随机选择其中一位用户返回 样本数据 g addV user property id 1 as 1 addV
  • OpenCV 从标准输入加载图像/视频

    我正在尝试使用以下代码从 stdin 读取 jpg 图像 int c count 0 vector