Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OpenCV(C#,emgu cv)检测屏幕上的输入文本字段_C#_Opencv_Image Processing_Opencv3.0_Emgucv - Fatal编程技术网

使用OpenCV(C#,emgu cv)检测屏幕上的输入文本字段

使用OpenCV(C#,emgu cv)检测屏幕上的输入文本字段,c#,opencv,image-processing,opencv3.0,emgucv,C#,Opencv,Image Processing,Opencv3.0,Emgucv,我正在尝试检测Windows窗体上的输入文本字段 我是OpenCV的新手,所以我尝试使用 我稍微修改了代码,所以添加了一个新的imagebox5并修改了阈值,因为原始代码没有检测到任何输入字段: #region Canny and edge detection watch.Reset(); watch.Start(); double cannyThresholdLinking = 120.0; cannyThreshold

我正在尝试检测Windows窗体上的输入文本字段

我是OpenCV的新手,所以我尝试使用

我稍微修改了代码,所以添加了一个新的imagebox5并修改了阈值,因为原始代码没有检测到任何输入字段:

#region Canny and edge detection
            watch.Reset(); watch.Start();
            double cannyThresholdLinking = 120.0;
            cannyThreshold = 1;
            UMat cannyEdges = new UMat();
            CvInvoke.Canny(uimage, cannyEdges, cannyThreshold, cannyThresholdLinking);
            imagebox5.Image = cannyEdges;
结果imagebox5显示了字段的大致轮廓,但未检测到矩形(输入文本字段)

如何在具有多个输入文本字段的字段上检测每个输入字段的位置

这里有一个方法

  • 将图像转换为灰度
  • Canny边缘检测
  • 查找轮廓并使用最小/最大轮廓面积进行过滤

我在PythonOpenCV中实现了它,但是您可以在C中采用相同的策略#

导入cv2
image=cv2.imread('1.png')
灰色=cv2.CVT颜色(图像,cv2.COLOR\u BGR2GRAY)
canny=cv2.canny(灰色,50,200,1)
cnts=cv2.查找对象(canny、cv2.RETR\u TREE、cv2.CHAIN\u近似值\u SIMPLE)
如果len(cnts)==2个其他cnts[1],则cnts=cnts[0]
对于碳纳米管中的碳:
面积=cv2。轮廓面积(c)
如果面积大于10000且面积小于15000:
cv2.等高线图(图[c],0,(36255,12),2)
cv2.imshow(“精明”,精明)
cv2.imshow(“图像”,图像)
cv2.waitKey()

您好,我正试图在Ubuntu18上用X服务器复制您的示例witn python 3.6,但我得到了两个模式窗口,每个窗口上都有黑色背景。您的示例在什么环境下运行良好?我正在使用Windows 10、
opencv python
v4.1.0.25、
opencv contrib python
v4.1.0.25、
numpy
v1.16.0、python 3.7.4感谢您的回答。根据您的回答,我还有一个问题-在我的例子中,为什么检测到的矩形会旋转。你能看看我的问题吗?
import cv2

image = cv2.imread('1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
canny = cv2.Canny(gray, 50, 200, 1)

cnts = cv2.findContours(canny, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
    area = cv2.contourArea(c)
    if area > 10000 and area < 15000:
        cv2.drawContours(image, [c], 0, (36,255,12), 2)

cv2.imshow('canny', canny)
cv2.imshow('image', image)
cv2.waitKey()