这就是我想做的事情:
我定期用网络摄像头拍照.有点像时间流逝的事情.但是,如果没有真正改变,也就是说,图片几乎看起来一样,我不想存储最新的快照.
我想有一些量化差异的方法,我必须凭经验确定一个阈值.
我在寻求简洁而不是完美.我正在使用python.
python image-comparison image-processing timelapse background-subtraction
我想拍摄RGB图像并将其转换为黑白RGB图像,如果其HSV值在某个范围之间,则像素为黑色,否则为白色.
目前我创建了一个新图像,然后通过迭代其数据创建一个新的像素值列表,然后创建.putdata()该列表以形成新图像.
感觉应该有一个更快的方法来做这个,例如.point(),但似乎.point()没有得到像素,而是从0到255的值.是否有.point()转换,但像素?
python performance image image-processing python-imaging-library
我有成千上万的图像,我需要清除那些不是照片或其他"有趣"的图像.
例如,"不感兴趣"的图像可以是所有一种颜色,或者主要是一种颜色,或简单的图标/徽标.
解决方案不一定非常完美,只需要删除最不有趣的图像就足够了.
到目前为止,我最好的想法是对像素进行随机抽样,然后......用它们做点什么.
我一直在编写一个我一直在写的程序的问题,并希望得到一些帮助或输入.对于某些背景,我使用Python 2.7和wxPython来做一个流媒体网络摄像头客户端.客户端从自己的线程中获取服务器中的图像,并将它们放入队列中.然后,GUI线程从队列中获取这些图像并将它们转换为wxBitmap对象.这种情况每0.5秒发生一次,效果很好.我能够将wxBitmap对象保存为文件,因此我知道一切正常.
我遇到的问题实际上是让wxBitmap对象显示在我的GUI上.我似乎唯一可以做GUI的工作是显示一个灰色矩形,其中应该是网络摄像头图像.
onPaint()当我想要刷新屏幕时,这是我的调用:
def onPaint(self,e):
## this is the function that actually draws and redraws the window
## to be displayed. I think it is something similar to blit()
## in other graphical display frameworks
print "in onPaint"
## create the device context object (graphics painter)
dc = wx.PaintDC(self)
dc.BeginDrawing()
## draw the bitmap to the screen
dc.DrawBitmap(self.imageBit,0,0,True)
dc.EndDrawing()
## test code.
## the following works and updates, which means that
## …Run Code Online (Sandbox Code Playgroud) 我需要一种方法来快速返回两个大列表之间的差异数量.每个列表项的内容为1或0(单个整数),每个列表中的项数总是307200.
这是我当前代码的示例:
list1 = <list1> # should be a list of integers containing 1's or 0's
list2 = <list2> # same rule as above, in a slightly different order
diffCount = 0
for index, item in enumerate(list1):
if item != list2[index]:
diffCount += 1
percent = float(diffCount) / float(307200)
Run Code Online (Sandbox Code Playgroud)
上面的工作,但它对我的目的来说太慢了.我想知道的是,是否有更快的方法来获得列表之间的差异数量,或者不同的项目百分比?
我在这个网站上看了几个类似的线程,但它们似乎与我想要的工作略有不同,而set()示例似乎并不适用于我的目的.:P