小编pzo*_*pzo的帖子

OpenCV - 将蒙版应用于彩色图像

如何在最新的python绑定(cv2)中将蒙版应用于彩色图像?在以前的python绑定中,最简单的方法是使用cv.Copy例如

cv.Copy(dst, src, mask)

但是这个功能在cv2绑定中不可用.没有使用样板代码有没有解决方法?

python opencv mask image-processing

34
推荐指数
3
解决办法
10万
查看次数

在iPhone上处理GPU(金属)和CPU(OpenCV)上的摄像头输入数据

我在iOS上以120 fps进行实时视频处理,并希望首先在GPU上预处理图像(下采样,转换颜色等在CPU上不够快),然后使用OpenCV在CPU上后处理帧.

使用Metal在GPU和CPU之间共享摄像头馈送的最快方法是什么?

换句话说,管道看起来像:

CMSampleBufferRef -> MTLTexture or MTLBuffer -> OpenCV Mat
Run Code Online (Sandbox Code Playgroud)

我正在通过以下方式转换CMSampleBufferRef - > MTLTexture

CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);

// textureRGBA
{
    size_t width = CVPixelBufferGetWidth(pixelBuffer);
    size_t height = CVPixelBufferGetHeight(pixelBuffer);
    MTLPixelFormat pixelFormat = MTLPixelFormatBGRA8Unorm;

    CVMetalTextureRef texture = NULL;
    CVReturn status = CVMetalTextureCacheCreateTextureFromImage(NULL, _textureCache, pixelBuffer, NULL, pixelFormat, width, height, 0, &texture);
    if(status == kCVReturnSuccess) {
        textureBGRA = CVMetalTextureGetTexture(texture);
        CFRelease(texture);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的金属着色器完成后,我将MTLTexture转换为OpenCV

cv::Mat image;
...
CGSize imageSize = CGSizeMake(drawable.texture.width, drawable.texture.height);
int imageByteCount = int(imageSize.width * imageSize.height * 4);
int mbytesPerRow …
Run Code Online (Sandbox Code Playgroud)

opencv gpgpu objective-c ios metal

16
推荐指数
1
解决办法
4362
查看次数

在iphone中按耳机按钮时的延迟

我试图使用插入式耳机的按钮(类似于压力的东西)在我自己的应用程序内触发不同的动作.然而我注意到无论我是否使用MPRemoteCommandCenterremoteControlReceivedWithEvent委托,我都会收到明显滞后的事件.更糟糕的是,如果我尝试双按快按钮,我只会得到一个UIEventTypeRemoteControl.

有没有人遇到类似的问题,知道这个的原因,甚至更好地了解一些解决方法?在ios8和ios9下测试.

iphone latency headset ios

13
推荐指数
1
解决办法
225
查看次数

使用python检查opencv中的轮廓区域

我尝试在新的python api(cv2)中使用checkContour()函数,如果我创建使用findContours检查的轮廓,它起作用,例如

contours, hierarchy = cv2.findContours(imgGray, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cv2.contourArea(contours[0])
Run Code Online (Sandbox Code Playgroud)

但是当我自己创建轮廓时,以下代码不起作用

contour = numpy.array([[0,0], [10,0], [10,10], [5,4]])
area = cv2.contourArea(contour)
Run Code Online (Sandbox Code Playgroud)

并在函数contourArea中返回"error:( - 215)contour.checkVector(2)> = 0 &&(contour.depth()== CV_32F || contour.depth()== CV_32S)"

当我换到

contour = numpy.array([[0,0], [10,0], [10,10], [5,4]], dtype=numpy.int32)
Run Code Online (Sandbox Code Playgroud)

我得到了"错误:( - 210)由于函数cvPointSeqFromMat中的元素类型不合适,矩阵无法转换为点序列"

如何从文档中使用C++生成以下代码

vector<Point> contour;
contour.push_back(Point2f(0, 0));
contour.push_back(Point2f(10, 0));
contour.push_back(Point2f(10, 10));
contour.push_back(Point2f(5, 4));

double area0 = contourArea(contour);
Run Code Online (Sandbox Code Playgroud)

在最新的python API(2.3)中工作?

python opencv

10
推荐指数
1
解决办法
2万
查看次数

如何检查一个轮廓是否嵌套/嵌入opencv中

我有两个轮廓,我想检查它们之间的关系(如果其中一个是嵌套的).通常,我会将findContours函数与CV_RETR_TREE检索模式一起使用.但是,我从不同的来源获得了轮廓(使用MSER方法).我实际上不仅有轮廓,还有区域遮罩,如果有帮助的话.例如,假设我想将字母"O"分段,那么我将使用以下蒙版或轮廓:

1)

0 0 0 0 0 0
0 1 1 1 1 0
0 1 0 0 1 0
0 1 0 0 1 0
0 1 1 1 1 0
0 0 0 0 0 0 
Run Code Online (Sandbox Code Playgroud)

2)

0 0 0 0 0 0
0 0 0 0 0 0
0 0 1 1 0 0
0 0 1 1 0 0
0 0 0 0 0 0
0 0 0 0 0 …
Run Code Online (Sandbox Code Playgroud)

opencv image-processing hierarchy contour

9
推荐指数
1
解决办法
3130
查看次数

使用cmake进行编译,使用macport安装依赖项

我正在尝试构建依赖于OpenCV的项目.我使用macports安装了Opencv,当我尝试构建项目时,cmake提供了以下输出:

CMake Error at CMakeLists.txt:47 (FIND_PACKAGE):
  By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "OpenCV", but
  CMake did not find one.

  Could not find a package configuration file provided by "OpenCV" with any
  of the following names:

    OpenCVConfig.cmake
    opencv-config.cmake

  Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
  "OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV"
  provides a separate development package or SDK, be …
Run Code Online (Sandbox Code Playgroud)

opencv compilation cmake

7
推荐指数
2
解决办法
2万
查看次数

在numpy和python中快速删除重复项

有没有快速的方法来获得numpy中的独特元素?我有类似的代码(最后一行)

tab = numpy.arange(100000000)

indices1 = numpy.random.permutation(10000)
indices2 = indices1.copy()
indices3 = indices1.copy()
indices4 = indices1.copy()

result = numpy.unique(numpy.array([tab[indices1], tab[indices2], tab[indices3], tab[indices4]]))
Run Code Online (Sandbox Code Playgroud)

这只是一个例子,在我的情况下indices1, indices2,...,indices4包含不同的索引集并具有各种大小.最后一行被执行多次并且Inoticed它实际上是我的代码中的瓶颈({numpy.core.multiarray.arange}作为先决条件).此外,排序并不重要,索引数组中的元素属于int32类型.我正在考虑使用带有元素值的哈希表作为键并尝试:

seq = itertools.chain(tab[indices1].flatten(), tab[indices2].flatten(), tab[indices3].flatten(), tab[indices4].flatten())
myset = {}
map(myset.__setitem__, seq, [])
result = numpy.array(myset.keys())
Run Code Online (Sandbox Code Playgroud)

但情况更糟.

有什么方法可以加快速度吗?我想性能损失来自复制数组的'花式索引',但我只需要读取结果元素(我不修改任何东西).

python arrays optimization performance numpy

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

以编程方式触发javascript中的鼠标移动事件

我有外部html5画布,您可以使用鼠标在某些行上绘制.我想以编程方式在这个画布上绘制一些东西,例如圆形,但是以动画的形式(不是一次绘画,而是模仿人类的方式,画圈子让我们说持续1秒.

外部代码不是我的,并使用GWT,这种方式是高度压缩和混淆的.这就是我考虑触发一系列mousedown, mousemove, sleep, mousemove, mouseup事件的原因.我知道可以触发鼠标向下和向上事件但是在特定位置的鼠标移动事件呢?理想情况下使用jquery.

javascript dom-events html5-canvas

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

录制来自多个音源/麦克风的音频

我很好奇是否可以录制来自多个来源的音频,如果没有,那有什么限制.

许多现有设备具有两个内部麦克风(主要用于降噪).最重要的是,可以使用audiojack插入额外的外部设备.您还可以通过蓝牙耳机获得另一个音频流.

您可以在android中指定AudioSource,但是可以同时从多个来源进行录制吗?我也对iOS设备上的情况感兴趣.

iphone android microphone audio-recording ios

6
推荐指数
0
解决办法
1590
查看次数

以编程方式单击来自不同应用程序的View元素

我想编写一个位于后台的服务,当按下耳机媒体按钮时,将点击来自不同应用程序的某个特定ListView元素.

现在我只能激活一些只有ListView元素的特定Activity.是否有可能触发这样的点击事件(考虑创建某种快捷方式或宏,例如Windows中的AutoHotkey)

我只看过这篇博文:http: //mylifewithandroid.blogspot.com/2009/01/generating-keypresses-programmatically.html

我也知道

View.performClick()
Run Code Online (Sandbox Code Playgroud)

事件.我还可以提一下,我可以看到我想要快捷方式的应用程序的源代码,但我无法修改它并重新分发它.如果它不可能在一个香草机器人上而不是根源?

android mouseclick-event

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