小编Chr*_*itz的帖子

使用opencv删除圆圈

我正在研究 opencv 问题来找出哪些圆圈被填充。然而,有时圆圈的边缘是误报的原因。我想知道是否可以通过将 RGB 中具有高 R 值的所有像素变成白色来删除这些圆圈。我的方法是创建一个粉红色的像素蒙版,然后从原始图像中减去蒙版以删除圆圈。截至目前,我正在戴黑色面具。我做错事了。请指导。

    rgb = cv2.imread(img, cv2.CV_LOAD_IMAGE_COLOR)
    rgb_filtered = cv2.inRange(rgb, (200, 0, 90), (255, 110, 255))
    cv2.imwrite('mask.png',rgb_filtered) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python opencv image-processing omr

5
推荐指数
2
解决办法
7369
查看次数

OpenCV imwrite 不保存照片,返回 false

我有以下代码,应该是

  • 浏览所有文件
  • 收集属于文件夹“0”或“1”的所有照片
  • 将照片稍微变换一下
  • 将它们放入一个新文件夹中,---所有“0-照片”都会进入一个唯一的文件夹。1个也一样

这里是

import cv2
import os
import random as rnd

outdir0='cancerdata\\0'
outdir1='cancerdata\\1'
readdir='sample'
j=0;
for dirs in os.listdir(readdir):
    dpath=os.path.join(readdir,dirs)
    for subdir in os.listdir(dpath): 
        fpath=os.path.join(dpath,subdir)
        for file in os.listdir(fpath):

            rfile=os.path.join(fpath,file)
            image=cv2.imread(rfile,0)
            size=rnd.randint(50,100)
            img=cv2.resize(image,(size,size),interpolation=cv2.INTER_AREA)
            print(img)
            if subdir == '0':
                wfile=os.path.join(outdir0,file)
                cv2.imwrite(os.path.join(outdir0,file),img)
            elif subdir == '1':
                wfile=os.path.join(outdir1,file)
                cv2.imwrite(os.path.join(outdir1,file),img)
Run Code Online (Sandbox Code Playgroud)

它不会给出错误,但由于某种原因不会保存任何文件。每当我尝试通过保存单个图像时

 cv2.imwrite(r'sample\cancerdata\1\8865_idx5_x2101_y851_class1.png',img)
Run Code Online (Sandbox Code Playgroud)

我得到的都是假的。

python opencv

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

如果使用 waitKey() 函数自动销毁窗口,那么函数 destroyAllWindows() 有什么用?

#!/usr/bin/python3    
import cv2     
cam=cv2.VideoCapture(0)
Run Code Online (Sandbox Code Playgroud)

检查相机是否工作!

cam.isOpened():
    print("Working")

while(cam.isOpened()):
    status,frame=cam.read()
    cv2.imshow('camera1',frame)
    if cv2.waitKey(1) & 0xFF==ord('q') :
            break
Run Code Online (Sandbox Code Playgroud)

通过调用下面的函数来删除窗口
如果我不写这个函数那么它也会正常运行!

   cv2.destroyAllWindows()
   cam.release()
Run Code Online (Sandbox Code Playgroud)

python opencv computer-vision

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

导入 OpenCV - 导入 cv2 或 cv3,为什么目录很重要?

我第一次尝试使用 OpenCV for Python 3。要安装,我只需pip3 install opencv-python在终端中输入即可。当我这样做时,我在 Finder 中看到(我在 Mac 上),在 中/usr/local/lib/python3.7/site-packages,我现在有一个名为 的新文件夹"cv2"

这很奇怪。为什么不是 cv3,因为我用的是 pip3?我不知道。

当我尝试import cv2从时python3,它说No module named 'cv2'。幸运的是StackOverflow 已经有了一个解决方案:如果我首先更改目录,例如:

cd /usr/local/lib/python3.7/site-packages

然后我就可以打开了cv2我不知道为什么OpenCV需要这一步。import numpy例如,我不必这样做;numpy不关心我从哪个目录开始,它就像另一个模块一样列出,例如 cv2.

无论如何,我将目录更改为site-packages、 start python3,然后我import cv2. 现在出现了新的错误。这次cv2找到了,但是它说:

from .cv2 import *  
ModuleNotFoundError: No module named 'cv2.cv2'
Run Code Online (Sandbox Code Playgroud)

作为记录,我还有 Python 2.7。如果我尝试cd /usr/local/lib/python2.7/site-packages然后启动 Python 2.7,我可以导入cv2. 这没问题,但我想将 …

python opencv

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

OpenCV 无法连接到 X 服务器:

当我尝试使用 cv2.imshow() 时,收到一条错误消息,指出它无法连接到 X 服务器。我在本地运行此程序,在 Windows 命令提示符中使用 bash。没有服务器、没有VPN等。

Python 3.4、CV2 3.4

img = cv2.imread(fileName)
cv2.imshow("Image", img)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

python windows opencv

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

如何将 numpy.array2string 形成的字符串转换回数组?

我有一个 numpy 数组字符串,它是通过使用转换的numpy.array2string

现在,我想要回我的 numpy 数组。

对我如何实现它有什么建议吗?

我的代码:

img = Image.open('test.png')
array = np.array(img)
print(array.shape)
array_string = np.array2string(array, precision=2, separator=',',suppress_small=True)
Run Code Online (Sandbox Code Playgroud)

PS 我的数组是3D数组而不是 1D 并且我使用,分隔符,而不是默认的空白

python numpy python-3.x

5
推荐指数
2
解决办法
6389
查看次数

python opencv 显示 gstreamer videotestsrc

我需要使用 GStreamer 将数据传递到一些 OpenCV/Cuda 分类和深度学习系统。

问题是我对 GStreamer 和 Cuda 很陌生,所以我需要制作一些简单的示例,结合尽可能少的元素 - 这里是 OpenCV 和 Gstreamer。

cv.imshow()现在我只希望 GStreamer在循环中将“videotestsrc pattern=ball”传递到一帧一帧

问题是我似乎无法打开该cv.VideoCapture()元素 - 正确地因为管道错误

我已经花了几个小时了,现在已经“放弃”了

OpenCV 是 v3.4.0 - 使用 GStreamer 支持编译 Python 是 3.6.8

这是我现在的代码 -

我用谷歌搜索了一遍,并尝试了许多管道组合,但没有任何东西能让我打开视频捕获元素

#!/usr/bin/env python3
import cv2 as cv

cap = cv.VideoCapture("videotestsrc ! video/x-raw,framerate=20/1 ! appsink", cv.CAP_GSTREAMER)

# Commented out to continue to capture
# Evaluates true => app closes
#if not cap.isOpened():
#    print('VideoCapture not opened')
#    exit(0)

while(True):
    ret, frame = cap.read()
    print(ret) …
Run Code Online (Sandbox Code Playgroud)

python linux opencv gstreamer

5
推荐指数
0
解决办法
517
查看次数

如何解决opencv中的“[mov,mp4,m4a,3gp,3g2,mj2 @ 0000021c356d9e00] moov原子未找到”

我正在尝试使用 OpenCV 在 kivy 应用程序中创建视频上传器。但是,当我尝试上传视频时,出现以下错误

[mov,mp4,m4a,3gp,3g2,mj2 @ 0000021c356d9e00] moov atom not found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000021c356d9e00] moov atom not found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000021c356d9e00] moov atom not found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000021c356d9e00] moov atom not found
...
Run Code Online (Sandbox Code Playgroud)

在此期间屏幕变得无响应。我最近编辑了 save() 函数并添加了 uploadClass() 因为我收到了另一个错误。

主要.py

...

class SaveDialog(Screen):
    save = ObjectProperty(None)
    text_input = ObjectProperty(None)
    cancel = ObjectProperty(None)

    def save(self, path, filename):

        for letter in os.path.join(path, filename):
            print(letter)

        def find(s, ch):
            return [i for i, letter in enumerate(s) if letter == ch]

        os_path_simpl = list(os.path.join(path, filename)) …
Run Code Online (Sandbox Code Playgroud)

python opencv ffmpeg

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

如何从表格格式的发票中提取数据

我正在尝试使用计算机视觉从 pdf/图像发票中提取数据。为此,我使用了基于 ocr 的 pytesseract。\n这是示例发票\n在此输入图像描述\n您可以在下面找到相同的代码

\n
import pytesseract\n\n\nimg = Image.open("invoice-sample.jpg")\n\ntext = pytesseract.image_to_string(img)\n\nprint(text)\n
Run Code Online (Sandbox Code Playgroud)\n

通过使用 pytesseract 我得到以下输出

\n
http://mrsinvoice.com\n\n \n\n\xe2\x80\x99 Invoice\n\nYour Company LLC Address 123, State, My Country P 111-222-333, F 111-222-334\n\n\nBILLTO:\n\nfofin Oe Invoice # 00001\n\nAlpha Bravo Road 33 Invoice Date 32/12/2001\n\nP: 111-292-333, F: 111-222-334\n\nclient@example.net Nomecof Reps Bob\nContact Phone 101-102-103\n\nSHIPPING TO:\n\neine ce Payment Terms ash on Delivery\n\nOffice Road 38\nP: 111-333-222, F: 122-222-334 Amount Due: $4,170\noffice@example.net\n\nNO PRODUCTS / SERVICE QUANTITY / RATE / UNIT AMOUNT\nHOURS: PRICE\n\n1 tye 2 $20 $40\n\n2__| Steering …
Run Code Online (Sandbox Code Playgroud)

python ocr tesseract python-imaging-library document-layout-analysis

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

为什么使用 PIL 与 OpenCV 加载时图像的宽度和高度会颠倒?

我正在使用PILOpenCV包加载图像。使用 加载图像时的高度和宽度与使用 加载图像时的高度和宽度相反。以下是打印使用这两个包加载的图像的高度和宽度的代码。PILcv2

\n
file = \'conceptual_captions/VL-BERT/data/conceptual-captions/val_image/00002725.jpg\'\n# load image using PIL\nimport PIL.Image\npil = PIL.Image.open(file).convert(\'RGB\')\nw, h = pil.size\nprint("width: {}, height: {}".format(w, h))\n
Run Code Online (Sandbox Code Playgroud)\n

打印输出\nwidth: 1360, height: 765

\n
# now using cv2\nimport cv2\nim = cv2.imread(file)\nprint("height, width, channels: {}".format(im.shape)) \n
Run Code Online (Sandbox Code Playgroud)\n

打印输出height, width, channels: (1360, 765, 3)

\n

我下载了图像并使用 Mac 上的信息选项检查了图像的大小。信息有width = 765height =\xe2\x80\x8a1360,与方法报告的相同cv2。为什么PIL给出错误的图像尺寸?

\n

当图像非常少时就会出现此问题。我链接的图像就是这样的一张图像。对于其余图像,PIL和报告的高度和宽度cv2是相同的。

\n

python opencv numpy image python-imaging-library

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