opencv c++-opencv-c++视频缩放问题

问题描述

opencv-c++视频缩放问题

这是部分代码
void CMy3dshowDlg::OnShow(CString File)
{
CvSize dst_Size;
dst_Size.width=0;
dst_Size.height=0;
scale=1.0;

cvNamedWindow("Show",0);
cvResizeWindow("Show",nScreenWidth/2,nScreenHeight/2);
cvMoveWindow("Show",nScreenWidth/4,nScreenHeight/4);
HWND hWnd = (HWND)cvGetWindowHandle("Show");
hWnd = ::GetParent(hWnd);
LONG style = GetWindowLong( hWnd, GWL_STYLE);

style = style & (~WS_CAPTION & ~WS_BORDER & ~WS_THICKFRAME);
SetWindowLong( hWnd, GWL_STYLE, style);
SetClassLong(hWnd,-10,(LONG)GetStockObject(BLACK_BRUSH));
cvSetMouseCallback("Show",my_mouse_callback,this);
g_capture = cvCreateFileCapture(File);

while(1)
{
    frame = cvQueryFrame(g_capture);
    int nFrame = (int)cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_COUNT);
    int currentFrame = (int)cvGetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES);
    if (currentFrame==nFrame-1){
            cvSetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES,0);
        }
    if(!frame==NULL)
    {
        dst_Size.width=frame->width  * scale;
        dst_Size.height=frame->height * scale;
        dstframe=cvCreateImage(dst_Size,frame->depth,frame->nChannels);
        cvResize(frame,dstframe);
        //cvMoveWindow("Show",(nScreenWidth-dst_Size.width)/2,(nScreenHeight-dst_Size.height)/2);
        if(dstframe->width<nScreenWidth||dstframe->height<nScreenHeight){
            cvShowImage("Show",dstframe);
        }
        cvReleaseImage(&dstframe);
    }
    else
    {
        cvShowImage("Show",frame);
    }

    double currentFrameWidth = cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_WIDTH);

    char c = cvWaitKey(33);
    switch (c)
    {
    case ' ':
        while(1)
        {
            c = cvWaitKey(0);
            if(c == ' ') break;
        }break;
    case '+':
        {
            if((frame->width*scale)<=nScreenWidth&&(frame->height*scale)<=nScreenHeight){
                scale=scale+0.1;
                break;
            }
            break;
        }break;
    case'-':
        {
            if((frame->width*scale)>nScreenWidth/7&&(frame->height*scale)>nScreenHeight/7){
                scale=scale-0.1;
                break;
            }break;
        }
        break;
    default:
        break;
    }
}
cvSetMouseCallback("Show",NULL,NULL);
cvReleaseImage(&frame);
cvReleaseImage(&dstframe);
cvReleaseCapture(&g_capture);
return;

}
本来是想要做视频缩放的,之前是通过缩放窗口来达到效果,可以实现,不过现在不想要这种效果,所以我想固定窗口,然后实现视频的缩放,所以我只在这里做了改变cvNamedWindow("Show",0);
cvResizeWindow("Show",nScreenWidth/2,nScreenHeight/2);
cvMoveWindow("Show",nScreenWidth/4,nScreenHeight/4);,发现不能达到缩放,只是分辨率改变了。

时间: 2024-07-29 04:23:26

opencv c++-opencv-c++视频缩放问题的相关文章

python opencv 使用摄像头捕获视频并显示

06-python opencv 使用摄像头捕获视频并显示 06-python opencv 使用摄像头捕获视频并显示 概述 实现过程 引用 创建摄像头对象 逐帧显示实现视频播放 释放摄像头对象和窗口 源代码 运行结果 参考 概述 本节实现的是使用内建摄像头捕获视频,并显示视频的每一帧以实现视频的播放. 创建摄像头对象 逐帧显示实现视频播放 实现过程 引用 不再赘述,代码如下. import cv2 import numpy import matplotlib.pyplot as plot 创建

vs2012配置opencv-vs2012配合opencv显示图片和视频时说没有导入进去

问题描述 vs2012配合opencv显示图片和视频时说没有导入进去 #include int main() { IplImage* img=cvLoadImage("D:FFOutputh010.bmp",0); if(!img) { printf("error"); } cvNamedWindow("test"); cvShowImage("test",img); cvWaitKey(0); cvReleaseImage(

EmguCV(OpenCV)实现高效显示视频(YUV)叠加包括汉字

原文:EmguCV(OpenCV)实现高效显示视频(YUV)叠加包括汉字   视频处理中,往往需要在上面增加文字包括汉字英文字母数字标点等,Emgu.CV/opencv 绘图 线面文字包括中文 这篇里也有相关介绍,但是这篇里根据逐像素修改rgb值的方法效率太低    查了很多资料,基本上opencv叠加汉字的方法都起源于这里 http://wenku.baidu.com/link?url=g1dCXwRbSpy7XUhsStRLANQRmvAXKSAa1ohrphx1R3XSZozi68WrTO

FFMPEG 最简滤镜filter使用实例(实现视频缩放,裁剪,水印等)

 FFMPEG官网给出了FFMPEG 滤镜使用的实例,它是将视频中的像素点替换成字符,然后从终端输出.我在该实例的基础上稍微的做了修改,使它能够保存滤镜处理过后的文件.在上代码之前先明白几个概念:     Filter:代表单个filter     FilterPad:代表一个filter的输入或输出端口,每个filter都可以有多个输入和多个输出,只有输出pad的filter称为source,只有输入pad的filter称为sink     FilterLink:若一个filter的输出pad

【FFMpeg视频开发与应用基础】八、 调用FFMpeg SDK实现视频缩放

<FFMpeg视频开发与应用基础--使用FFMpeg工具与SDK>视频教程已经在"CSDN学院"上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接地址:FFMpeg视频开发与应用基础--使用FFMpeg工具与SDK Github工程代码地址:FFmpeg_Tutorial 视频缩放是视频开发中一项最基本的功能.通过对视频的像素数据进行采样或插值,可以将低分辨率的视频转换到更高的分辨率,或者将高分辨率的视频转换为更低的分辨率.通过FFMpeg提供

OpenCV入门:显示视频

OpenCV还提供了载入视频并输出的功能,本节进行简单的输出显示操作.先上源代码: // // main.cpp // Display_Vedio // // Created by 黄露 on 16/3/18. // Copyright 2016年 黄露. All rights reserved. // #include "highgui.h" int main(int argc, const char * argv[]) { //创建窗口 cvNamedWindow("Ve

OpenCV入门:播放视频加入滚动条

本节在上一节的基础上添加滚动条,以实现前进或后退,先上代码: // // main.cpp // Display_Vedio_Control // // Created by 黄露 on 16/3/19. // Copyright 2016年 huanglu_thu13. All rights reserved. // #include "cv.h" #include "highgui.h" //定义两个全局变量 //设置滚动条初始位置为0 int g_slider

opencv 摄像头-opencv捕获USB摄像头,出现问题

问题描述 opencv捕获USB摄像头,出现问题 求助各位大神,刚开始接触openCV,目前使用VS2013,openCV2.4.8.用openCV捕获USB摄像头,程序编译没报错,就是弹出一个窗口然后立马消失,命令行窗口提示摄像头打开失败,不知道什么原因,网上的帖子各种说法,终究没有解决 ```#include ""stdafx.h""#include ""cv.h""#include ""highgui

opencv c++-opencv 摄像头捕捉时窗口是灰色

问题描述 opencv 摄像头捕捉时窗口是灰色 摄像头指示灯有亮,但就是没有视频code都在下面 哪位大神能给解答?感激不尽.#include ""stdafx.h"" #include #include int lowerH=0;int lowerS=0;int lowerV=0; int upperH=180;int upperS=256;int upperV=256; //This function threshold the HSV image and cr