1.项目前言
都说二十一世纪四大天坑,生化环材。其中最引人瞩目的无疑是化学和生物毕竟就这俩学科中学教。而处在化学和生物这两个理科生的痛点的交集之处,便是大名鼎鼎的有机化学。在化学界,他是守在通往大神道路上的一道关卡;在生物界,他是阻碍题干说人话的痛点。有机化学的键线式常常看的人脑袋大,数碳数氢数往往要很长时间。
所以有没有什么办法缓解这一点呢?
本文作者作为一名退役的oier加现役化竞人,自然想要通过一些现有的知识来为学科出一份力,于是,这个项目应运而生。
2.项目介绍
在今年1月,我发布了一款程序,作为对于化学式识别的浅尝。
这个项目,主要目的其实有些醉翁之意不在酒的意思。所谓的化学式识别,便是借着“结构简式”这样一套图像规则摸清opencv的运算规则,进而更好地引出实现识别具有一定规则花纹的方法,车道线算是其中基本的一例。
3.主程序讲解
import cv2 as cv
from PIL import Image, ImageFilter
import PIL.ImageOps
import numpy as np
from math import gcd, sqrt, ceil, floor
# from huaxue1215 import zhuaqu
from matplotlib import pyplot as plt
#定义区
path = "D:/121.png"
Prep = cv.imread(path, 0)
X, Y = Prep.shape[0:2]
Near = [[0] * 10] * 10 #邻接表
Points = [] #每个点的坐标,dot格式
Ts = 0
接下来,在程序里加入并查集实现:
class bingchaji:
parent = {
}
def __init__(self, n):
for i in range(n):
self.parent[i] = i
def find(self, k):
if k == self.parent[k]:
return k
return self.find(self.parent[k])
def equal(self, a, b):
return self.find(a) == self.find(b)
def merge(self, U, D):
if self.equal(U, D):
return
self.parent[self.find(U)] = self.find(D)
def count(self, n):
cnt = 0
Q = []
for i in range(n):
if self.parent[i] == i:
cq = 0
for j in range(n):
if self.find(j) == i:
cq += 1
Q.append((i, cq))
return Q
def Prt(self, n