我正在阅读"设计模式:可重用OOSW的元素".在第二章中,作者提供了一个他们称为Lexi的编辑器的案例研究,它似乎是用C++编写的.我到处寻找,但我能找到的唯一有用的链接说:
Gof在一份说明中告诉我们,Lexi是基于"Doc,由Calder开发的文本编辑应用程序".但本文仅概述了一位编辑,没有任何消息来源.而且我甚至认为,Lexi 从未真正作为一个项目存在过.
该链接提供了Delphi源代码.我正在使用C++,因为这就是我所熟悉的,这就是本书中使用的内容.
有谁知道我在哪里可以找到Lexi的C++源代码?如果原版从未存在过,那么找一些我可以用作基础的东西会很好.我真的不想从头开始编写我自己的文本编辑器,所以我可以完成本书中的案例研究.
有没有办法改变cv::imshow调用时弹出窗口的位置?
对我来说,窗口看起来似乎部分在屏幕外,所以我必须拖动它才能看到整个图像.每次都必须这样做非常烦人.
我查看了参考手册 - 看起来你可以控制窗口标题的内容,但我看不到任何与窗口位置有关的内容.
哦,如果我使用旧的C接口(cvShowImage),行为是一样的.
有任何想法吗?
有没有办法从编码图像和视频中轻松提取DCT系数(和量化参数)?任何解码器软件都必须使用它们来解码块DCT编码的图像和视频.所以我很确定解码器知道它们是什么.有没有办法将它们暴露给使用解码器的人?
我正在实施一些直接在DCT域中工作的视频质量评估算法.目前,我的大部分代码都使用OpenCV,因此如果有人知道使用该框架的解决方案,那将会很棒.我不介意使用其他库(也许是libjpeg,但这似乎只适用于静止图像),但我主要担心的是尽可能少地执行格式化工作(我不想重新发明轮子并写入我自己的解码器).我希望能够打开OpenCV可以打开的任何视频/图像(H.264,MPEG,JPEG等),如果它是块DCT编码,则可以获得DCT系数.
在最坏的情况下,我知道我可以编写自己的块DCT代码,通过它运行解压缩的帧/图像,然后我将回到DCT域.这不是一个优雅的解决方案,我希望我能做得更好.
目前,我使用相当常见的OpenCV样板来打开图像:
IplImage *image = cvLoadImage(filename);
// Run quality assessment metric
Run Code Online (Sandbox Code Playgroud)
我用于视频的代码同样微不足道:
CvCapture *capture = cvCaptureFromAVI(filename);
while (cvGrabFrame(capture))
{
IplImage *frame = cvRetrieveFrame(capture);
// Run quality assessment metric on frame
}
cvReleaseCapture(&capture);
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我都获得了IplImageBGR格式的3通道.有什么方法可以得到DCT系数吗?
我试图去除此图像中的正弦噪声:

这是它的DFT光谱(应用对数和任意强度缩放后):

我已经有一个巴特沃斯滤镜应用于此图像.它将淘汰中频峰值.加载后我正在注意将它从[0..255]缩放到[0..1.0].这是过滤器:

结果不是很好:

我的问题:
我拍摄了图像(裁剪)并从Gonzalez和Woods的数字图像处理书中过滤.在它们的示例中,通过滤波完全去除周期性噪声,并且图像的平均强度保持相同.
我的加载图像和过滤器,DFT,过滤,IDFT的源代码如下:
import cv
def unshift_crop(comp, width, height):
result = cv.CreateImage((width, height), cv.IPL_DEPTH_8U, 1)
for x in range(height):
for y in range(width):
real, _, _, _ = cv.Get2D(comp, x, y)
real = int(real) * ((-1)**(x+y))
cv.Set2D(result, x, y, cv.Scalar(real))
return result
def load_filter(fname):
loaded = cv.LoadImage(fname, cv.CV_LOAD_IMAGE_GRAYSCALE)
flt = cv.CreateImage(cv.GetSize(loaded), cv.IPL_DEPTH_32F, 2)
width, height = cv.GetSize(loaded)
for i in range(width*height):
px, _, _, _ = cv.Get1D(loaded, …Run Code Online (Sandbox Code Playgroud) 我拥有域penkov.id.au.我使用github托管一个博客,其子记录的A记录指向github页面服务器(204.232.175.78).michael.penkov.id.au
bash-3.2$ dig michael.penkov.id.au +nocomments +nocmd +nostats
; <<>> DiG 9.8.3-P1 <<>> michael.penkov.id.au +nocomments +nocmd +nostats
;; global options: +cmd
;michael.penkov.id.au. IN A
michael.penkov.id.au. 86400 IN A 204.232.175.78
penkov.id.au. 14399 IN NS ns1.linode.com.
penkov.id.au. 14399 IN NS ns5.linode.com.
penkov.id.au. 14399 IN NS ns4.linode.com.
penkov.id.au. 14399 IN NS ns2.linode.com.
penkov.id.au. 14399 IN NS ns3.linode.com.
ns1.linode.com. 62648 IN A 69.93.127.10
ns1.linode.com. 136520 IN AAAA 2600:3c00::a
ns2.linode.com. 67499 IN A 65.19.178.10
ns2.linode.com. 122812 IN AAAA 2600:3c01::a …Run Code Online (Sandbox Code Playgroud) 我有一个33秒的视频,我正在尝试使用OpenCV处理.我的目标是确定每个帧对应的时间实例(相对于视频的开头).我这样做是为了能够比较以不同帧速率录制的同一场景的视频中的帧.
什么工作:
ffprobe报告一致,所以我很高兴相信这是正确的.我遇到的问题是:
CAP_PROP_POS_MSEC返回不正确的值.截至视频结束时,最高可达557924毫秒(超过9分钟).对于33s的视频,这可能不对.CAP_PROP_FRAME_COUNT也是不正确的.它被报道为33371,以59.75 fps的速度拍摄超过9分钟的镜头.与上述错误一致,但仍然不正确.CAP_PROP_POS_FRAME 同样不正确.视频可以在这里找到(大约10MB).
关于什么可能出错的任何想法?
ffprobe 输出:
FFprobe version SVN-r20090707, Copyright (c) 2007-2009 Stefano Sabatini
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 1
libavformat 52.31. 0 / 52.31. 0
built on Jan 20 2010 00:13:01, gcc: 4.4.3 20100116 (prerelease)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/misha/Dropbox/Public/sequence.mp4':
Duration: 00:00:33.37, start: 0.000000, bitrate: 2760 kb/s
Stream #0.0(und): Video: h264, yuv420p, 1920x1080, 59.75 tbr, 1k tbn, 2k tbc
Stream …Run Code Online (Sandbox Code Playgroud) 在简单的肖像图像中检测和移除人的头发的最佳方法是什么?任何有用的算法库?我一直在关注openCV,看起来它可能有些用处
我正在从教科书中实现量化算法.我正处于几乎可以工作的地方,除了我在四舍五入时得到一个一个错误.这就是教科书对此的评价:
2^p可以通过添加偏移和右移位p位位置来执行舍入除法
现在,我对正确的转变有所了解,但他们谈论的是什么偏移?
这是我的示例代码:
def scale(x, power2=16):
if x < 0:
return -((-x) >> power2)
else:
return x >> power2
def main():
inp = [ 12595827, -330706, 196605, -387168, -274244, 377496, -241980,
-545272, -196605, 24198, 196605, 193584, 104858, 424683,
-40330, 41944 ]
expect = [ 192, -5, 3, -6, -4, 5, -3, -8, -3, 0, 3, 3, 1, 6, 0, 0 ]
actual = map(scale, inp)
for i in range(len(expect)):
if actual[i] == expect[i]:
continue
print 'inp: % 8d …Run Code Online (Sandbox Code Playgroud) 我试图使用OpenCV在同一窗口中水平相邻地显示2个图像.
我已经尝试过使用adjustROI函数.图像1的宽度为1088像素,高度为2208像素,而图像2的宽度为1280像素,高度为2208像素.请在下面的代码中提出可能出现的问题.我得到的是一张图片大小Image2也包含Image2的内容.
Mat img_matches=Mat(2208,2368,imgorig.type());//set size as combination of img1 and img2
img_matches.adjustROI(0,0,0,-1280);
imgorig.copyTo(img_matches);
img_matches.adjustROI(0,0,1088,1280);
imgorig2.copyTo(img_matches);
Run Code Online (Sandbox Code Playgroud) 如何从OpenCV中的YUV文件中读取一个帧?