我正在尝试使用Php. 开发应用程序 将开发此应用程序有两种可能的方法.第一个是尝试做 www.picnik.com ,直接在浏览器上进行图像处理. 另一个是开发cbir(content-bases图像检索)算法. 那么,是否可以将图像从PHP脚本发送到OpenCV程序?甚至显示实时操纵的图像? 谢谢. 解决方案 进行Google搜索" php opencv"建议 - 是的,您可以:) 这个看起来不错. 知道它是特定于面对呼声的特定的,但对您来说可能是一个很好的起点). 只有在您使用自己的服务器时,才能添加许多其他核心内容. 其他解决方案 for php 是一个新的PECL模块.需要一些工作才能完成,但是已经完成了很多工作. 其他解决方案 还有另一个PHP面部检测类在这里: 显然,它在每张照片上都无法100%起作用,可能与脸部的角度等有关,但我听到了好的报道.我正在考虑在下一个项目上使用它.
以下是关于 opencv 的编程技术问答
我试图像Adobe Photoshop一样实现Unsharp屏蔽.我收集了很多有关间歇性的信息,但我不确定是否缺少某些内容.这是代码: void unsharpMask( cv::Mat* img, double amount, double radius, double threshold ) { // create blurred img cv::Mat img32F, imgBlur32F, imgHighContrast32F, imgDiff32F, unsharpMas32F, colDelta32F, compRes, compRes32F, prod; double r = 1.5; img->convertTo( img32F, CV_32F ); cv::GaussianBlur( img32F, imgBlur32F, cv::Size(0,0), radius ); cv::subtract( img32F, imgBlur32F, unsharpMas3
我是OpenCV的新手.我有多个图像.示例图像之一,如下所示.基本上,我想将背景和前景分开,以使边缘清晰,并且可以正确检测轮廓. 我尝试使用各种参数尝试过许多过滤器,当然还有阈值. 最后,当我在Photoshop过滤器画廊上查看时,我注意到一个名为邮票的过滤器,它给了我所需的结果(右上角).它使边缘清晰起来,我想用一些模糊对柔软的角落进行了模糊. 我不确定如何使用Python CV2获得与Photoshop的邮票过滤器相同的操作? 任何帮助或建议都将不胜感激. 原始未触及的图像 尝试1: - 代码 import cv2 import numpy as np from matplotlib import pyplot as plt input_img = cv2.imread('images/Tas/t3.bmp') desired_img = cv2.imread('images/stamp.jpg') # gray scale gray =
我是OpenCV和图像处理的新手,我不确定如何解决我的问题. 我有一张iPhone制作的文档的照片,我想将该文档转换为黑白.我试图使用阈值,但文本不是很好(有点模糊和不可读).我想发短信看起来与原始图像相同,只有黑色,背景是白色的.我能做些什么? P.S.当我为文档的一部分拍照时,文本很大,结果还可以. 我将感谢任何帮助. 这是我使用的示例图像,结果是: 解决方案 我的attemp,也许比您的读书更易读: IplImage * pRGBImg = 0; pRGBImg = cvLoadImage(input_file.c_str(), CV_LOAD_IMAGE_UNCHANGED); if(!pRGBImg) { std::cout
如何使用OpenCV在图像中检测热点?我尝试过谷歌搜索,但无法获得线索. 描述: 我需要从实时视频流中过滤良好的图像.在这种情况下,我只需要在框架中检测热点即可.我需要在OpenCV中执行此操作. 什么是热点? 热点是受试者脸上有光泽的区域,这是由闪光反射出光泽表面或不均匀照明引起的.它往往会使主题看起来好像在出汗一样,这不是一个好外观. 更新: 在图像/中 以上两个链接也可以为我的帖子提供帮助? 带有热点的图像: 没有热点的图像: 解决方案 可以通过高斯过滤获得这些"热点"区域的自动粗糙指示,然后进行二进制.期望"热点"比周围的区域更明亮,因此在高斯过滤之后,它们至少会略微突出显示,同时,由于低通滤波的性质,图像伪像降低了. 示例结果如下.在简单转换为灰度之后,在0.75处的二进化(范围始终为[0,1]),在HSB colorspace的通道中进行高斯过滤后,二进制为0.85. 在这两种情况下,由于"热点"的假设不太大.
我目前使用Python 2.7和CV2在Ubuntu 14.04. 运行此代码时: import numpy as np import cv2 img = cv2.imread('2015-05-27-191152.jpg',0) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 它返回: File "face_detection.py", line 11, in gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.error: /home/arthurckl/Desktop/opencv-3.0.0-rc1/modules/imgproc/src/color.cpp:7564: error: (-215) scn == 3 || scn == 4 in function cvtColor 我已经在这里搜索了,一个答案说我可以以错误的方式加载我的照
我一直在尝试读写矩阵以持续的文件存储(例如xml)object = cv2.cv.Load(file) object = cv2.cv.Save(file) source .这对当前的Anaconda Python cv2不起作用.人们提出的解决方案等解决方案,例如我很困惑为什么需要如此多的锅炉板代码来实现此简单功能,我认为这是可以接受的解决方案.我想要像旧解决方案一样简单的东西. 解决方案 在OpenCV的最新更新中如何完成此操作是 在文档中根本没有说明 . 这个最小示例应该足以向您展示过程的工作原理.有效地,当前的Python包装器看起来更像C ++版本,现在您直接使用cv2.FileStorage而不是cv2.cv.Save和cv2.cv.Load. . Python cv2.FileStorage现在是其自己的文件处理程序,就像它在C ++内部一样.在C ++中,如果您想将 Write 写入文件文件,则可以执行以下操作: cv::FileStorag
我正在尝试打开网络摄像头并使用OpenCV显示简短的捕获.我目前正在使用C ++语言进行Xcode. 代码非常简单: #include #include using namespace std; using namespace cv; int main(int argc, const char * argv[]) { // variable initialization Mat frame; VideoCapture cap; // 0 is the webcam // try to open camera cap.open(0); if (!cap.isOpened()) return -1; // check if there is no video or no way to display it // create a
我正在尝试检测到整个图像的关键点,因此我尝试将其分为单元格并在每个单元格上检测.但是,使用ORB检测器与使用快速检测器相同的结果.对于Orb,随着我增加细胞数量(较小的单元格),我的关键点要少. . 下图显示了将图像在10行和10个cols和最大关键点上划分的结果.左侧的图像是快速的结果(894个关键点),右侧是Orb检测器的结果(142关键点). 有人可以向我解释为什么我会得到不同的结果?因为我认为Orb基于快速功能.在使用Orb时,是否有一种方法可以快速获取相同数量的关键点? 解决方案 事件ORB使用快速关键点检测器,我们在使用快速和球时必须获得相同数量的关键点. ORB只是在快速关键点检测器上构建,而快速检测器在ORB中进行了修改,并且不完全相同(原始检测器).在Orb的官方论文中,它指出了Orb中快速探测器的其他贡献,并友善地研究了它. "FAST does not produce a measure of cornerness, and we ha
我刚刚注意到,当窗口中存在带有相机或电影框架图像更改的窗口中时,OpenCV的性能会大大减慢.可以做什么解决这个问题? 解决方案 解决方案是将跟踪栏移至单独的窗口.对我来说,OSX的性能提高了4.7倍(从3 fps到14).我不知道它是否总是这样起作用,还是在我的计算机上像这样的工作,但是我以前没有看到这样的线索,所以我决定分享. string title = "My window"; int p = 2; // Create a different window for controls namedWindow(title + " - controls"); // I show an image once just to resize the window imshow(title + " - controls", Mat::zeros(1, 500, CV_8UC1)); createTrackbar("Parameter", title + " - controls
我将图像的字节数组从C#发送到C ++库.我用OpenCV(版本3.3.1)BMP图像解码很快,但JPEG图像很慢. 如何加快jpeg图像的解码时间? (多线程,GPU,...?) decode的性能 --------------------------------------------------------- | Resolution | Format | Size | Duration | | --------------------------------------------------------- | 800x600 | BMP | 2MB | 0.7 ms | | --------------------------------------------------------- | 800x600 | JPEG | 10KB | 4 ms | 500% s
我有一个函数,我将称为" rgb2something",它将RGB数据[1x1x3]转换为单个值(概率),在输入RGB数据中的每个像素上循环循环速度很慢. 我已经尝试了以下方法来加快转换的速度.要生成LUT(查找表): import numpy as np levels = 256 levels2 = levels**2 lut = [0] * (levels ** 3) levels_range = range(0, levels) for r in levels_range: for g in levels_range: for b in levels_range: lut[r + (g * levels) + (b * levels2)] = rgb2something(r, g, b) 并将RGB转换为转换的概率图像: result = np.take(lut, r_channel + (g_channe
我运行了以下代码,以检查GPU和CPU使用之间的性能差异.我正在计算cv::cvtColor()函数的平均时间.我拨打四个函数: Just_mat()(不使用opencl for Mat对象) Just_UMat()(不使用opencl作为Umat对象) OpenCL_Mat()(使用opencl作为Mat对象) OpenCL_UMat()(使用opencl作为UMat对象) CPU和GPU. 我没有发现GPU和CPU使用之间的性能差异很大. int main(int argc, char* argv[]) { loc = argv[1]; just_mat(loc);// Calling function Without OpenCL just_umat(loc);//Calling function Without OpenCL cv::ocl::Context context; std::vector
我正在运行以下代码: cv::Ptr fastDetector = cv::FastFeatureDetector::create(100, true, 2); cv::Ptr gpuFastDetector = cv::cuda::FastFeatureDetector::create(100, true, 2); std::vector keypoints; std::vector gpuKeypoints; cv::Mat frame; cv::cuda::GpuMat gFrame; frame = cv::imread("image1.jpg"); // 4608 x 3456 cv::cvtColor(frame, frame, CV_BGR2GRAY); gFrame.upload(frame);
我有3个数字阵列的形状>(500,500).我正在尝试同时迭代它们.我尝试了两种不同的方法,但两者都很慢. 这里Ix_Ix_blur,Ix_Iy_blur和Iy_Iy_blur的大小相同.我正在尝试查找功能并在OpenCV图像上绘制它. 方法1: for i in xrange (Ix_Ix_blur.shape[1]): for j in xrange(Ix_Ix_blur.shape[0]): A = np.array([ [Ix_Ix_blur[j][i], Ix_Iy_blur[j][i]], [Ix_Iy_blur[j][i], Iy_Iy_blur[j][i]] ]) detA = (A[0][0]*A[1][1])-(A[0][1]*A[1][0]) traceA = A[0][0]+A[1][1] harmonic_mean = detA/traceA
我需要在两个图像之间进行相似性匹配.为此,我正在使用C ++ 中的OpENCV的Orb Kepoints检测器和ORB描述器提取器 我的问题在匹配中.我决定使用LSH和 使用LSH和 bfmatcher 来测试两种匹配类型:根据文档和两种算法,LSH都应该比蛮力快(第一个并不将所有描述符一个一个一个和第二个描述符比较). 当我尝试两者时,我的BFMatcher比LSH的速度快(但要快得多),而且我不知道为什么以及如何修复它. 在开始I中,尽管需要更多关键点才能看到差异,但我决定通过让Orb检测到多达70000个关键来增加这一点: OrbFeatureDetector detector(70000); 但这使它变慢. 我不知道我对LSH的假设是否比蛮力更快,或者我在代码上做错了什么. 我的代码: //Detector int numKeyPoints = 70000; OrbFeatureDetector detector(nu
使用模块(例如PIL或CV2)在Python中捕获屏幕的最有效方法是什么?因为它占用了很多RAM. 我想教AI通过屏幕刮擦和整洁玩chrome的Dino游戏,但这是减慢的方式... 我尝试过: import numpy as np from PIL import ImageGrab import cv2 import time last_time = time.time() while True: printscreen_pil = ImageGrab.grab(bbox= (0, 40, 800, 640)) printscreen_numpy = np.array(printscreen_pil.getdata(), dtype = 'uint8').reshape((printscreen_pil.size[1], printscreen_pil.size[0], 3)) print(f'the loop took {time