如何将电脑输出的vga信号旋转90度(主屏不旋转),主屏和副屏要求显示相同的图像!!

如何将电脑输出的vga信号旋转90度(主屏不旋转),主屏和副屏要求显示相同的图像!!,第1张

你用的什么显卡?我笔记本用nvidia 9300m gs,可以在Nvidia控制面板中设置多屏显示和旋转显示器,设置双屏显示,既可以让笔记本屏幕当主屏,也可以让另外一个屏当主屏,这样实现扩展显示一点冲突也没有。NV是支持两个屏幕各自有不同的设置,应该也可以各自旋转(要不然让显示器旋转,哈!)。

A卡的话还没用过,应该也能实现。两张显卡?主板有两个插槽?或者一个集成一个独显?除非同样A卡或N卡,不然高端主板才支持混插。

试了一下nview桌面管理里面是可以设置旋转显示器,同时副显示器不会跟着旋转,这样可以满足你的需要了。你只需要购买一般带双输出接口的显卡。

图像整体任意角度旋转,就是一个像素一个像素的来的

你上面的效果是两幅图像的效果

你上面两幅图像的效果就是平常意义上的像素旋转

只不过一幅图像的时候我们用黑色区域代替 而楼主用另一个图像代替

这不矛盾

也就是说旋转超出边界的部分用第二个图像填充

就是你上面的效果

你如果编过旋转 缩放 仿射等matlab函数,你就可以很快的达到你想要的效果

想matlab里的imrotate函数 你可以自己编编实现一下

使用GDI

void CAaaView::OnDraw(CDC pDC)

{

CAaaDoc pDoc = GetDocument();

ASSERT_VALID(pDoc);

Graphics graphics( pDC->m_hDC );

Image image(L"2bmp");

Point points[] = { Point(0, 0), Point(imageGetWidth(), 0),

Point(0, imageGetHeight())};

Matrix matrix(1,0,0,1,230,10); // 定义一个单位矩阵,坐标原点在(230,10)

matrixRotate(30); // 顺时针旋转30 度

matrixScale(063,06); // X 和 Y 方向分别乘以063 和06 比例因子

matrixTransformPoints(points, 3); // 用该矩阵转换points

graphicsDrawImage(&image, points, 3);

// TODO: add draw code for native data here

}

#include "StdAfxh"

#include "cvh"

#include "highguih"

#include "mathh"

int main ()

{

IplImage src = 0;

IplImage dst = 0;

/ the first command line parameter must be image file name /

if ( (src = cvLoadImage ("d:\\Image\\minipng", -1)) != 0)

{

int delta = 1;

int angle = 0;

int opt = 0;// 1: 旋转加缩放

// 0:  仅仅旋转

double factor;

dst = cvCloneImage (src);

cvNamedWindow ("src", 1);

cvShowImage ("src", src);

for (;;)

{

float m[6];

// Matrix m looks like:

//

// [ m0  m1  m2 ] ===>  [ A11  A12   b1 ]

// [ m3  m4  m5 ]       [ A21  A22   b2 ]

//

CvMat M = cvMat (2, 3, CV_32F, m);

int w = src->width;

int h = src->height;

if (opt)// 旋转加缩放

factor = (cos (angle  CV_PI / 180) + 10)  2;

else//  仅仅旋转

factor = 1;

m[0] = (float) (factor  cos (-angle  2  CV_PI / 180));

m[1] = (float) (factor  sin (-angle  2  CV_PI / 180));

m[3] = -m[1];

m[4] = m[0];

// 将旋转中心移至图像中间

m[2] = w  05f;

m[5] = h  05f;

//  dst(x,y) = A  src(x,y) + b

cvZero (dst);

cvGetQuadrangleSubPix (src, dst, &M);

cvNamedWindow ("dst", 1);

cvShowImage ("dst", dst);

if (cvWaitKey (1) == 27)//ESC

break;

angle = (int) (angle + delta) % 360;

}// for-loop

}

return 0;

}

参考程序如上所述,如果原始图像大小不变是无法输出到原始图像的。

比如你原始图像为200200,旋转45度,输出到一个200200的大小的图像空间里,这个原始的大小已经是原来的一半成了 根2100根2100,你要保证角点相切的话,这个原始图像的大小需要根据旋转角度的大小随时改变。

比如旋转45度,先把源图像变到100100(我说的源图像是里面有内容的图像),而你处理的图像还是200200的带着黑框的。

进行旋转之后就是切边缘了。

如果你的电脑显卡安装的驱动是不是完整版,一般用户只安装驱动核心程序,并不太安装驱动软件,也就是带辅助功能的显卡驱动程序,

如果没有安装建议下载安装后,再到显示,高级设置,在显示方向一项里,可以调输入信号的行场,360度画面转向。

“格式工厂”软件可以将视频输出成旋转90度,具体步骤如下:

1、首先,在电脑上安装好“格式工厂”软件,可以在软件商城下载,也可以直接在搜索软件上搜索。

2、下载后打开软件,打开软件后界面如下图所示。

3、选择需要旋转的视频格式,这里以MP4格式为例,点击它。

4、在d出的以下页面中选择“输出配置”。

5、在接下来的界面里,滑动下拉按钮,向下滑到底。

6、这里就可以设置旋转了,如下图,单击“旋转”,右面会出现向下的小三角箭头,单击它就可以选择向左还是向右了

完成以上步骤即可成功将视频输出成旋转90度或180度。

clc,clear;

I=imread('Penguinsjpg');  %读入

I1=rot90(I,1);%逆时针转90度

I2=rot90(I,2);%逆时针转180度

I3=rot90(I,3);%逆时针转270度

figure

subplot(2,2,1)

imshow(I);

title('原图')

subplot(2,2,2)

imshow(I1)

title('逆时针转90度')

subplot(2,2,3)

imshow(I2);

title('逆时针转180度')

subplot(2,2,4)

imshow(I3)

title('逆时针转270度')

如果要运行程序,要自己找,且放在当前路径下,且命名为Penguinsjpg

以上就是关于如何将电脑输出的vga信号旋转90度(主屏不旋转),主屏和副屏要求显示相同的图像!!全部的内容,包括:如何将电脑输出的vga信号旋转90度(主屏不旋转),主屏和副屏要求显示相同的图像!!、如何编程实现图像任意角度旋转、编好的一个C++的旋转程序怎么对图像使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10212417.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存