小编Rob*_*Rob的帖子

如何使用GDI +对旋转的图像进行居中?

我正在尝试使用GDI +将旋转的图像居中到目标缓冲区.源缓冲区和目标缓冲区的大小不同.

源缓冲区是图像数据的大小:( 宽度,高度).
目标缓冲区是适合整个旋转图像所需的矩形大小:(rotateWidth,rotatingHeight).

这是我正在尝试的代码:

// Calculate the size needed for the image to be rotated into   
int width = /* some width */;
int height = /* some height */;
System::Windows::Size destSize 
  = IPMathUtilities::CalculateRotatedImageSize(rotateAreaBoundingPoints, 
    rotationDegree, width, height);

//
// Create source bitmap object
Bitmap^ sourceBitmap = gcnew Bitmap(width, height, width * 2, 
  PixelFormat::Format16bppRgb555, ptrSourceBuffer);

//
// Create destination bitmap object
int destBufferSize = destSize.Width * destSize.Height * 2;
BYTE* pDestBuffer = new BYTE[destBufferSize]; …
Run Code Online (Sandbox Code Playgroud)

gdi+ c++-cli image-processing

6
推荐指数
1
解决办法
5070
查看次数

Xcode4,iOS:复制目标,为什么我不能更改标识符?

这让我发疯了 - 我已经在Xcode4中为我的iOS项目复制了一个目标 - 但是,我的目标的"摘要"页面上的"iOS应用程序目标"下的目标标识符字段是不可编辑的.

如何更改目标的标识符?

ios4 xcode4

6
推荐指数
1
解决办法
3019
查看次数

cocos2d,box2d和retina模式:放弃,还是试着让它起作用?

我一直试图让我的box2d游戏在视网膜模式下工作,而且当我在高分辨率模式下运行时,我遇到了很多烦人的问题.

cocos2d在视网膜模式下正确渲染我的图形,但是我发现黑客攻击需要使用box2d才能在低分辨率模式下工作.例如,我发现我需要做这样的事情,以使视网膜模式下的调试绘制形状大小正确:

b2Vec2 vertices[4];
vertices[0].Set(-0.5f / CC_CONTENT_SCALE_FACTOR(), 1.0f / CC_CONTENT_SCALE_FACTOR());
vertices[1].Set(-0.5f / CC_CONTENT_SCALE_FACTOR(), -1.0f / CC_CONTENT_SCALE_FACTOR());
vertices[2].Set(0.5f / CC_CONTENT_SCALE_FACTOR(), -1.0f / CC_CONTENT_SCALE_FACTOR());
vertices[3].Set(0.5f / CC_CONTENT_SCALE_FACTOR(), 1.0f / CC_CONTENT_SCALE_FACTOR());  
int32 count = 4;    
b2PolygonShape polygon;    
polygon.Set(vertices, count);
Run Code Online (Sandbox Code Playgroud)

那个hack(调整所有顶点CC_CONTENT_SCALE_FACTOR())当然不可避免地导致密度破解,以保持类似于低分辨率模式的移动:

b2FixtureDef fixtureDef;
fixtureDef.shape = &polygon;
fixtureDef.density = 1.0f * CC_CONTENT_SCALE_FACTOR();
fixtureDef.friction = 0.9f;
playerBody->CreateFixture(&fixtureDef);
Run Code Online (Sandbox Code Playgroud)

这会在施加力量时导致另一次调整攻击:

b2Vec2 force = b2Vec2(10.0f / CC_CONTENT_SCALE_FACTOR(), 15.0f / CC_CONTENT_SCALE_FACTOR());
playerBody->ApplyLinearImpulse(force, playerBody->GetPosition());
Run Code Online (Sandbox Code Playgroud)

请记住,我通过缩放调试绘制调用来绘制调试模式,如下所示:

glPushMatrix();  
glScalef(CC_CONTENT_SCALE_FACTOR(), CC_CONTENT_SCALE_FACTOR(), 1.0f);
world->DrawDebugData();
glPopMatrix();
Run Code Online (Sandbox Code Playgroud)

什么是我从根本上误解了如何让box2d与视网膜模式一起工作?我正在使用Steffen Itterheim建议的Box2DHelper代替PTM_RATIO,但这似乎还不够.有任何想法吗?此时我将完全放弃视网膜模式.

box2d-iphone ios retina-display

6
推荐指数
1
解决办法
2092
查看次数

GStreamer pipeline + OpenCV RTSP VideoCapture 在 Docker 容器中不起作用

我正在尝试让 GStreamer + OpenCV RTSP 视频捕获在基于 NVIDIA PyTorch 图像的 Docker 容器中工作。我最终必须从源代码构建 OpenCV 才能启用 GStreamer 集成,我在 Dockerfile 中这样做:

FROM nvcr.io/nvidia/pytorch:19.12-py3

# OpenCV custom build instructions from:
# https://medium.com/@galaktyk01/how-to-build-opencv-with-gstreamer-b11668fa09c
# https://github.com/junjuew/Docker-OpenCV-GStreamer/blob/master/opencv3-gstreamer1.0-Dockerfile

# Install base dependencies + gstreamer
RUN pip uninstall -y opencv-python
RUN apt-get update
RUN apt-get -y install build-essential
RUN apt-get -y install pkg-config
RUN apt-get install -y libgstreamer1.0-0 \
            gstreamer1.0-plugins-base \
            gstreamer1.0-plugins-good \
            gstreamer1.0-plugins-bad \
            gstreamer1.0-plugins-ugly \
            gstreamer1.0-libav \
            gstreamer1.0-doc \
            gstreamer1.0-tools \
            libgstreamer1.0-dev \
            libgstreamer-plugins-base1.0-dev \
            cmake \
            protobuf-compiler …
Run Code Online (Sandbox Code Playgroud)

opencv rtsp gstreamer docker

6
推荐指数
1
解决办法
5129
查看次数

使用DirectMusic播放单个音符

我在正在开发的应用程序中使用DirectMusic进行MIDI播放.有谁知道是否可以使用DirectMusic播放单个音符?目前,我正在将一个代表整个"歌曲"的内存数据结构转换为MIDI缓冲区并通过DirectMusic播放.我希望能够播放单独的音符,而无需为它生成MIDI缓冲区,加载它并播放它.DirectMusic甚至可以使用这种类型的东西吗?

这是我第一次进入DirectMusic世界,所以希望我不太了解它的能力......

midi directmusic xaudio2

5
推荐指数
1
解决办法
753
查看次数

更有效的方法来确定字符串是否以一组令牌中的令牌开头?

我现在正在做一些我现在正在做的代码:

public CommandType GetCommandTypeFromCommandString(String command)
{
   if(command.StartsWith(CommandConstants.Acknowledge))
      return CommandType.Acknowledge;
   else if (command.StartsWith(CommandConstants.Status))
      return CommandType.Status;
   else if (command.StartsWith(CommandConstants.Echo))
      return CommandType.Echo;
   else if (command.StartsWith(CommandConstants.Warning))
     return CommandType.Warning;
     // and so on

   return CommandType.None;
}
Run Code Online (Sandbox Code Playgroud)

我想知道在C#中是否有更有效的方法.这段代码需要每秒执行很多次,而且我对完成所有这些字符串比较所花费的时间不太满意.有什么建议?:)

c# optimization

5
推荐指数
2
解决办法
4807
查看次数

Visual Studio Installer项目:RemovePreviousVersions似乎不起作用

我正在尝试构建可以升级的Visual Studio安装程序项目.我已经按照我可以找到的MS文档中的所有建议进行了跟踪:

  • 我开始在1.0.0开始对安装程序进行版本控制,并按主要版本(2.0.0,3.0.0等)递增.
  • 每次更改安装程序版本时,我都会更改产品代码.
  • 我为每个安装程序版本保留相同的升级代码.

当我进入并检查添加/删除程序时,我可以看到我的安装程序包的新版本已成功"安装".我可以看到以前安装的任何版本都不再存在.大.

安装程序写入Program Files的文件永远不会更改.从安装到安装,应用程序二进制文件保持不变.我无法弄清楚为什么会这样.我已经删除了构建的安装程序MSI,我已经清理了100次我的解决方案,我已经做了所有我可以确保我的应用程序二进制文件的先前版本没有被包含在新的MSI中,但我似乎无法获得这个工作.在较新的安装之后,我的应用程序的最旧版本始终存在于Program Files中.

有任何想法吗?

windows-installer visual-studio-2010

5
推荐指数
0
解决办法
4798
查看次数

指针可能指向cpu寄存器吗?

我想知道指针是否指向cpu寄存器,因为在它可能没有的情况下,使用引用而不是指针尽可能使编译器有机会进行一些优化,因为引用的对象可能驻留在某个寄存器中但指向的对象通过指针可能不会.

c++ optimization pointers reference

5
推荐指数
2
解决办法
1968
查看次数

Mobile Safari:为什么 window.scrollTo(0, 0) 不滚动到 (0, 0)?

我已经使用 Bootstrap 3、Sammy.js 和 Knockout 3 构建了一个小型单页 Web 应用程序。我发现当页面向下滚动时,window.scrollTo(0, 0)当我也更改时,我无法在 Mobile Safari 上工作location.hash-特别是在 iPhone 5C 上的 iOS 7 上(尽管可能会发生在其他 iPhone 型号上)。

当我尝试这样的事情时:

self.changeState = function() {
    self.state(State.NewState);
    location.hash = 'somevalue';
    window.scrollTo(0, 0);
};
Run Code Online (Sandbox Code Playgroud)

页面将几乎一直滚动到顶部 - 它通常会滚动到 Y = 12 或 13。如果我window.scrollTo(0, 0);在用户滚动到页面底部时调用它,它永远不会滚动到 0 (并且内容足够高以保证滚动到顶部)。

我已经尝试了各种 StackOverflow 答案/建议(例如,同样的老问题,.scrollTop(0) 在 Chrome 和 Safari 中不起作用);通常的补救措施(包裹在 a 中setTimeout)不会改变行为 - 它仍然滚动到页面顶部附近的某个地方,但不是完全到顶部。

标题样式:

<div class="navbar navbar-default navbar-inverse navbar-static-top">
Run Code Online (Sandbox Code Playgroud)

视口设置:

<meta name="viewport" 
      content="width=device-width, 
               height=device-height, 
               initial-scale=1.0, …
Run Code Online (Sandbox Code Playgroud)

javascript mobile-safari sammy.js knockout.js twitter-bootstrap-3

5
推荐指数
1
解决办法
6366
查看次数

如何使用 ffmpeg HLS 实时流式传输传入批次的单个帧,实时“附加”到 m3u8 播放列表?

我的总体目标:

服务器端:

  • 我有一批不时到达的连续 JPEG 编码帧 (8-16),生成速度大约为 2 FPS。
  • 我想托管一个 HLS 实时流,当一批新帧到达时,我将这些新帧编码为 h264.tsffmpeg,并将新.ts段自动添加到 HLS 流(例如.m3u8文件)中。

客户端/浏览器端:

  • .m3u8更新时,我想正在观看的视频流,以简单的“继续”,在那里新的点推进.ts段已被添加。
  • 我不需要用户及时向后擦洗,客户端只需要支持对流的实时观察。


我目前的做法:

服务器端:

为了生成流的“前”几段,我正在尝试以下操作(现在只是命令行以使 ffmpeg 正常工作,但最终将通过 Python 脚本自动化)

作为参考,我使用的是 ffmpeg版本 3.4.6-0ubuntu0.18.04.1

ffmpeg -y -framerate 2 -i /frames/batch1/frame_%d.jpg \
       -c:v libx264 -crf 21 -preset veryfast -g 2 \
       -f hls -hls_time 4 -hls_list_size 4 -segment_wrap 4 -segment_list_flags +live video/stream.m3u8
Run Code Online (Sandbox Code Playgroud)

其中/frames/batch1/文件夹包含帧序列(例如 frame_01.jpg、frame_02.jpg 等...)。这似乎已经无法正常工作,因为它不断添加#EXT-X-ENDLIST.m3u8文件的末尾,据我所知,这对于实时 HLS …

ffmpeg video-streaming http-live-streaming video.js hls.js

5
推荐指数
0
解决办法
754
查看次数