小编TFC*_*TFC的帖子

PyTorch:如何对多个图像应用相同的随机变换?

我正在为包含许多图像对的数据集编写一个简单的转换。作为数据增强,我想对每一对应用一些随机变换,但该对中的图像应该以相同的方式进行变换。\n例如,给定一对两个图像AB,如果A水平翻转,则B必须水平翻转作为A。那么下一对CD应该与A和进行不同的变换B,但是C和 也D以相同的方式进行变换。我正在尝试用下面的方式

\n
import random\nimport numpy as np\nimport torchvision.transforms as transforms\nfrom PIL import Image\n\nimg_a = Image.open("sample_ajpg") # note that two images have the same size\nimg_b = Image.open("sample_b.png")\nimg_c, img_d = Image.open("sample_c.jpg"), Image.open("sample_d.png")\n\ntransform = transforms.RandomChoice(\n    [transforms.RandomHorizontalFlip(), \n     transforms.RandomVerticalFlip()]\n)\nrandom.seed(0)\ndisplay(transform(img_a))\ndisplay(transform(img_b))\n\nrandom.seed(1)\ndisplay(transform(img_c))\ndisplay(transform(img_d))\n
Run Code Online (Sandbox Code Playgroud)\n

然而\xe3\x80\x81上面的代码没有选择相同的转换,并且根据我的测试,它取决于调用的次数transform

\n

有没有办法transforms.RandomChoice在指定时强制使用相同的转换?

\n

python pytorch torchvision

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

查找子串避免使用递归函数

我正在研究 Python 中的算法并解决一个问题:

让 x(k) 是一个递归定义的字符串,基本情况 x(1) = "123" 并且 x(k) 是 "1" + x(k-1) + "2" + x(k-1) + " 3”。给定三个正整数 k、s 和 t,找到子串 x(k)[s:t]。

例如,如果 k = 2,s = 1 且 t = 5,x(2) = 112321233 且 x(2)[1:5] = 1232。

我已经使用一个简单的递归函数解决了它:

   def generate_string(k):
        if k == 1:
            return "123"
            
        part = generate_string(k -1)
        return ("1" + part  + "2" + part + "3")
        print(generate_string(k)[s,t])
Run Code Online (Sandbox Code Playgroud)

虽然我的第一种方法给出了正确的答案,但问题是当 k 大于 20 时构建字符串 x 花费的时间太长。当 k 小于 50 时,程序需要在 16 秒内完成。我尝试使用记忆化,但它没有帮助,因为我不允许缓存每个测试用例。因此我认为我必须避免使用递归函数来加速程序。有什么我应该考虑的方法吗?

python algorithm math recursion big-o

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

OpenCV:OCR 之前阴影图像的轮廓检测

我正在尝试对文档图片进行 OCR,我目前的方法是

  1. 将图像读取为灰度
  2. 二值化阈值
  3. 沿着从以下获得的轮廓包裹透视cv2.findContours()

如果图像没有阴影,上述方法效果很好。现在我想获得阴影图片的轮廓。我的第一次尝试是用于cv2.adaptiveThreshold步骤 2。自适应阈值成功地削弱了阴影,但生成的图像失去了纸张和背景之间的对比度。这使得 cv2 无法找到纸张的轮廓。所以我需要使用其他方法来去除阴影。

有什么办法可以去除阴影并保持背景颜色吗?

作为参考,这里是我正在使用各种方法处理的示例图片。从左开始,我做了

  1. 灰度
  2. 阈值化
  3. 自适应阈值
  4. 正常化

我的目标是获得第二张没有阴影的图片。

在此输入图像描述

请注意,我其实有一个专门针对图片的临时解决方案,就是将图片有阴影的部分单独处理。然而,它不是阴影图片的通用解决方案,因为它的性能取决于阴影的大小、形状和位置,所以请使用其他方法。

这是原图。

在此输入图像描述

python ocr opencv image

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

Python 抓取:错误 54“连接被对等方重置”

我写了一个简单的脚本来从多个网站获取 html。尽管直到昨天我对脚本还没有任何问题。它突然开始抛出异常。

Traceback (most recent call last):
  File "crowling.py", line 45, in <module>
    result = requests.get(url)
  File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/api.py", line 76, in get
    return request('get', url, params=params, **kwargs)
  File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/sessions.py", line 530, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/sessions.py", line 685, in send
    r.content
  File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/models.py", line 829, in content
    self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
  File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/models.py", line 754, in generate
    raise ChunkedEncodingError(e)
requests.exceptions.ChunkedEncodingError: ("Connection broken: ConnectionResetError(54, 'Connection reset by …
Run Code Online (Sandbox Code Playgroud)

python web-scraping urllib3 python-requests

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