我正在使用感知哈希技术来查找接近重复和完全重复的图像。该代码非常适合查找完全相同的重复图像。然而,找到近似重复和略有修改的图像似乎很困难。由于它们的哈希值之间的差异分数通常类似于完全不同的随机图像的哈希差异。
为了解决这个问题,我尝试将几乎重复的图像的像素化减少到 50x50 像素,并使它们变成黑/白,但我仍然没有我需要的东西(分数差异很小)。
这是几乎重复的图像对的示例:
图片 1 (a1.jpg):
图片 2 (b1.jpg):
这些图像的哈希分数之间的差异是:24
当像素化(50x50 像素)时,它们看起来像这样:
rs_a1.jpg
rs_b1.jpg
像素化图像的哈希差异分数甚至更大!:26
下面是@ann zen 要求的两个近似重复图像对的示例:
对 1
对 2
我用来减小图像大小的代码是这样的:
from PIL import Image
with Image.open(image_path) as image:
reduced_image = image.resize((50, 50)).convert('RGB').convert("1")
Run Code Online (Sandbox Code Playgroud)
以及比较两个图像哈希的代码:
from PIL import Image
import imagehash
with Image.open(image1_path) as img1:
hashing1 = imagehash.phash(img1)
with Image.open(image2_path) as img2:
hashing2 = imagehash.phash(img2)
print('difference : ', hashing1-hashing2)
Run Code Online (Sandbox Code Playgroud) python opencv image-processing computer-vision template-matching
我正在尝试从优质或健康的玉米粒中识别和计数受昆虫感染的玉米粒。我已经完成阈值处理,直到在图像中所有玉米粒周围绘制轮廓。
仅供参考,受昆虫侵扰的玉米粒有洞并且颜色褪色。我应该如何从包含受感染玉米粒和良好玉米粒的图像中获取受感染玉米粒的百分比?我也愿意接受其他建议。
我在尝试开始训练我的模型(DCGAN)时遇到了很多麻烦。它给了我错误:
'tuple' object has no attribute 'layer'
Run Code Online (Sandbox Code Playgroud)
我读到这可能是因为同时拥有 TensorFlow 1.14.0 版和 Keras 2.2 版或更高版本。我试图通过将 Keras 版本降级到 2.1.5 来解决这个问题,但我仍然遇到同样的问题。
from google.colab import drive
drive.mount('/mntDrive')
import os,sys #os es para gestionar directorios (trabajar con archivos); sys es para trabajar con variables del sistema
# numpy
import numpy as np
# data processing, CSV file I/O (e.g. pd.read_csv)
import pandas as pd
from sklearn.model_selection import train_test_split
# Charts
import matplotlib.pyplot as plt
from matplotlib.pyplot import imread
#process
from tqdm import tqdm
# Image …Run Code Online (Sandbox Code Playgroud) 我有以下图片
以及具有完全相同徽标的另一个变体

我试图去掉徽标本身,同时保留底层文本。使用以下代码段
import skimage.filters as filters
import cv2
image = cv2.imread('ingrained.jpeg')
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
smooth1 = cv2.GaussianBlur(gray, (5,5), 0)
division1 = cv2.divide(gray, smooth1, scale=255)
sharpened = filters.unsharp_mask(division1, radius=3, amount=7, preserve_range=False)
sharpened = (255*sharpened).clip(0,255).astype(np.uint8)
# line segments
components, output, stats, centroids = cv2.connectedComponentsWithStats(sharpened, connectivity=8)
sizes = stats[1:, -1]; components = components - 1
size = 100
result = np.zeros((output.shape))
for i in range(0, components):
if sizes[i] >= size:
result[output == i + 1] = 255
cv2.imwrite('image-after.jpeg',result)
Run Code Online (Sandbox Code Playgroud)
我得到了这些结果


但如图所示,所得到的图像在水印轮廓的残留和字母被洗掉方面分别不一致。有没有更好的解决方案可以补充?理想的解决方案是删除水印边框而不影响其下方的文本。
我运行 Django 项目没有任何问题。直到我重新安装了Windows,然后重新安装了vscode!现在我正在运行 Django 项目,vscode 显示以下错误:
Error: no python at C:\Users\AccountName\AppData\Local\Programs\Python\Python38-32\python.exe
Run Code Online (Sandbox Code Playgroud)
我想检查列表是否是有效的块序列,其中每个块以某个值开始,以下一次出现的相同值结束。例如,这是三个块的有效序列:
lst = [2, 7, 1, 8, 2, 8, 1, 8, 2, 8, 4, 5, 9, 0, 4, 5, 2]
\___________/ \_____/ \_______________________/
Run Code Online (Sandbox Code Playgroud)
这是无效的:
lst = [2, 7, 1, 8, 2, 8, 1, 8, 2, 8, 4, 5, 9, 0, 4]
\___________/ \_____/ \_____ ... missing the 2 to end the chunk
Run Code Online (Sandbox Code Playgroud)
我有一个解决方案,但它很糟糕。你看到更好的东西了吗?
def is_valid(lst):
while lst:
start = lst.pop(0)
if start not in lst:
return False
while lst[0] != start:
lst.pop(0)
lst.remove(start)
return True
# Tests, should …Run Code Online (Sandbox Code Playgroud) import modin.pandas as pd
Run Code Online (Sandbox Code Playgroud)
我正在 Windows 10 机器中导入 modin.pandas 库但出现错误
“AttributeError:模块‘ray’没有属性‘utils’”
安装 modin 库时遗漏了什么?
使用 Daphne/Channels 的具有 1000 个 WebSockets 的完全加载的多租户 Django 应用程序,运行良好几个月,突然租户都称其为支持线,应用程序运行缓慢或完全挂起。由于 HTTP REST API 命中率快速且无错误,因此将其缩小到 WebSockets。
应用程序日志或操作系统日志均未表明存在问题,因此唯一要做的就是下面提到的异常。在这两天的时间里,它在这里和那里一遍又一遍地发生。
我不期望任何深入的调试帮助,只是一些关于可能性的即兴建议。
AWS Linux 1
Python 3.6.4
Elasticache Redis 5.0
Run Code Online (Sandbox Code Playgroud)
channels==2.4.0
channels-redis==2.4.2
daphne==2.5.0
Django==2.2.13
Run Code Online (Sandbox Code Playgroud)
uwsgi服务的拆分配置HTTP,daphne服务asgi,Nginx
May 10 08:08:16 prod-b-web1: [pid 15053] [version 119.5.10.5086] [tenant_id -] [domain_name -] [pathname /opt/releases/r119.5.10.5086/env/lib/python3.6/site-packages/daphne/server.py] [lineno 288] [priority ERROR] [funcname application_checker] [request_path -] [request_method -] [request_data -] [request_user -] [request_stack -] Exception inside application: Lock is not acquired.
Traceback (most recent call last):
File "/opt/releases/r119.5.10.5086/env/lib/python3.6/site-packages/channels_redis/core.py", line 435, in receive
real_channel
File "/opt/releases/r119.5.10.5086/env/lib/python3.6/site-packages/channels_redis/core.py", …Run Code Online (Sandbox Code Playgroud) 我通过下载分发文件并运行来安装 networkx:
python setup.py install
Run Code Online (Sandbox Code Playgroud)
看来已经成功了,安装后我收到此消息
Installed c:\python\python36-32\lib\site-packages\decorator-4.0.11-py3.6.egg
Finished processing dependencies for networkx==1.11
Run Code Online (Sandbox Code Playgroud)
但是当我运行一个非常简单的测试代码时,我收到错误
import networkx as nx
G=nx.Graph()
print(G.nodes())
print(G.edges())
print(type(G.nodes()))
print(type(G.edges()))
Run Code Online (Sandbox Code Playgroud)
> Traceback (most recent call last): File "netExample.py", line 3, in
> <module>
> G=nx.Graph()
> AttributeError: module 'networkx' has no attribute 'Graph'
Run Code Online (Sandbox Code Playgroud)
运行print(dr(nx))赋予以下属性:
> ['GraphMLReader', 'GraphMLWriter', '__builtins__', '__cached__',
> '__doc__', '__file__', '__loader__', '__name__', '__package__',
> '__path__', '__spec__', 'exception', 'generate_adjlist',
> 'generate_edgelist', 'generate_gexf', 'generate_gml',
> 'generate_graph6', 'generate_graphml', 'generate_multiline_adjlist',
> 'generate_pajek', 'generate_sparse6', 'parse_adjlist',
> 'parse_edgelist', 'parse_gml', …Run Code Online (Sandbox Code Playgroud) 我有一个列表,看起来像:
mot = [0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0]
我需要附加到一个列表,当元素从0to 1(而不是 from 1to 0)更改时的索引。
我试着做以下,但是当它发生变化,同时也注册1到0。
i = 0
while i != len(mot)-1:
if mot[i] != mot[i+1]:
mot_daily_index.append(i)
i += 1
Run Code Online (Sandbox Code Playgroud)
另外,但不是那么重要,是否有更干净的实现?