GithubHelp home page GithubHelp logo

colennn / qinjianpu Goto Github PK

View Code? Open in Web Editor NEW
56.0 2.0 14.0 60.99 MB

🎵简谱编辑器+论坛。想实现一个既可以创建简谱,又能分享的曲谱社区。

License: MIT License

Java 23.74% HTML 0.78% CSS 0.68% JavaScript 74.51% Yacc 0.30%
blog opencv tess4j java numbered-musical-notation

qinjianpu's Introduction

QinJianPu

​ 轻简谱总体思路就是 简谱编辑器+论坛。想实现一个既可以创建简谱,又能分享的曲谱社区。

轻简谱具有以下功能:

  1. 简谱制谱,可实现在页中的完成简谱的制作和修改
  2. 简谱播放,可播放曲谱上的内容。
  3. 图像识别,用户上传简谱谱例便可生成可供播放的格式以及可供修改的格式。
  4. 论坛功能,提供用户论坛的谱例上传、曲谱修改、曲谱评论,曲谱管理。
  5. 后台管理,系统管理员可在后台实现启用、禁用用户登录、曲谱管理、评论管理以及分类管理。

使用技术

OpenCV 3.3.0 + Tess4J 4.0 简谱识别 基于CodeMirror.js代码编辑器框架 简谱论坛、后台管理 :基于J2EE snap.svg矢量图操作框架的简谱制谱工具

系统界面

首页,可以查看论坛当中分享的曲谱

曲谱编辑页面,可创建曲谱,带有图像识别、曲谱编辑、曲谱播放等功能

查看曲谱功能,一般用于游客

曲谱识别的界面

后台管理界面1

后台管理界面2

图像识别原理及部分代码

public static List<Mat> horizontalProjection(Mat inputMat) {
		int height = inputMat.height();// 图片的高度
		int width = inputMat.width();// 长度
		double[] pixelValue = null;// 获取的每个像素值
		int[] projectValArry = new int[height];// 存储每行的像素量
		// 如果该行有255像素的像素点,则记录下来ֵ
		for (int row = 0; row < height; row++) {
			for (int col = 0; col < width; col++) {
				pixelValue = inputMat.get(row, col);
				if (pixelValue[0] != 0)// 没有则跳过
					projectValArry[row]++;}}
		// 按照上面的得出的行信息绘制出每行的框框
		pixelValue[0] = 255; // 像素点为255
		Mat dst = new Mat(height, width, CvType.CV_8UC1);
		for (int row = 0; row < height; row++) {
			for (int col = 0; col < projectValArry[row]; col++) {
				dst.put(row, col, pixelValue[0]);}}
		// 按行切割
		List<Mat> rowsImgsList = new ArrayList();
		Mat rowsImg = null;
		int rowsNum = 0;
		Scalar color = new Scalar(255, 0, 0);
		// 获取每行的top,bottom
		for (int row = 0; row < height; row++) {
			pixelValue = dst.get(row, 0);
			if (pixelValue[0] != 0) {
				int top = row;
				// System.out.println("top:" + row);
				for (row = top; row < height; row++) {
					pixelValue = dst.get(row, 0);
					if (pixelValue[0] == 0) {
						// 获得底部
						int bottom = row;
						Imgproc.rectangle(dst, new Point(0, top), new Point(width, bottom), color);
						Rect rect = new Rect(0, top, width, bottom - top);// 得出rect
						rowsImg = new Mat(inputMat, rect);// 单行
						rowsImgsList.add(rowsNum, rowsImg);// 存入集合中
						rowsNum++;
						break;}
                }
            }
        }
		return rowsImgsList;
}

因为对自己的识别率不是很满意所以用了jTess来手动提高识别率。😂

参考链接

CodeMirror.js代码编辑器框架文档

Snap.js 对于Svg矢量图进行对象操作的js框架

MIDI.js 乐器播放开源js框架

OpenCV Java documentation (3.4.1) 图像识别Java文档

Tess4J 基于Java的文字识别开源库文档

百度OCR文字识别API文档

感谢支持😘

qinjianpu's People

Contributors

colennn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

qinjianpu's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.