2015-03-12 15:12:00 axl19530209 阅读数 295

    图像是网页制作的不可或缺的一个元素,在HTML语言里,提供了一个专门用来处理图像的<img>标签。

  在<img>图像标签里,src属性是不可以缺少的,用来设置图片的路径,设置路径后,在img标签所放置的位置上,就能显示出由该路径所指定的图片,其基本语法如下:

  1. <img src="images/001.jpg" />

  除了src属性外,<img>标签还有其他的一些属性。

  图像标签的说明表

属性名           用法

alt           指定当鼠标在图片停留时,图片上将会显示的提示性的文本

align         指定图片和它周围文本的对齐方式,设置值分别可以是top、bottom、left和right等

border        指定图片的边框的宽度,其值是大于或等于0的整数,它以像素(px)为单位

width         是指定图片在浏览器中显示的宽度

height        是指定图片在浏览器中显示的高度

2019-01-19 11:02:55 macunshi 阅读数 484

在做一个图像语义分割的项目。因为项目需要,得处理大量采集的图片数据,很多图片背景和前景难以区分,只有人工交互标注,所以编写了一个简单的交互标注软件。只能标注两类,可以撤销10次,可以设置工作半径和颜色阈值,用了简单的颜色距离判断,当然你可以在我的基础上更改代码,使用区域生长法等其他方法。

本软件对于块分区明显的图片比较容易标注,但对于我自己项目的图片还是不太行,我也在改进方法,下一版本的要使用超像素分割然后人工交互标注的方法,期待有eCognition的专业软件的图像块分割效果,只是eCognition这个软件只能分割,不能人机交互对块进行快速分类,要分类还要设置特征很麻烦。

注意:软件是用MATLAB 2017写的,比较简单。运行环境是MCR9.2,运行软件前需要先安装MCR9.2,送上链接:

https://pan.baidu.com/s/1woQOIX0AyAQOw6C05QH5sQ

有的机器安装完成后需要把安装目录放到计算机环境变量里去,然后重启才能用。

下面给出代码和生成的exe,exe只要有MCR9.2的环境就可以独立运行,和装不装MATLAB没有关系。

下载链接:https://download.csdn.net/download/macunshi/10927217

 

因资料下载量大,下载需要的积分就自动增加了,有小伙伴嫌下载所需积分太大,但是我无法设置下载所需积分数。

所以需要资料的可以在博客评论里联系我,也可以私聊我qq:1224277269。

 

2016-11-20 01:01:39 eguid_1 阅读数 9885

 

javaCV图像处理系列:

 

一、javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作

二、javaCV图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制

三、opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(方便多摄像头遍历及调用,相比javacv更快的摄像头读取速度和效率,方便读取后的图像处理)

四、opencv图像处理系列:国内车辆牌照检测识别系统(万份测试准确率99.7%以上)

 

 

前言:

本章全部采用openCV中的Mat类型进行图像操作,Mat类型与CvMat和IplImage类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,openCV对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。

本章基于openCV来处理图像操作,除了基本的javacv.jar、javacpp.jar两个jar包外,还需要依赖opencv.jar、opencv-根据平台而定.jar。

1、实现的功能

(1)摄像头视频抓取

(2)Frame和Mat相互转换

(3)给图像添加文字

(4)把添加水印文字的图像转换为Frame并显示到窗口

(5)保存图片

2、代码实现

运行后会出现一个窗口,窗口中会实时显示日期和eguid正向和eguid翻转字符,关闭窗口相当于结束程序运行。

该程序会自动保存第一帧图像到本地eguid.jpg文件。

 

// 转换器,用于Frame/Mat/IplImage相互转换
		OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();

		// 使用OpenCV抓取本机摄像头,摄像头设备号默认0
		OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);

		// 开启抓取器
		grabber.start();

		//做好自己!--eguid版权所有,转载请注明出处!
		CanvasFrame cFrame = new CanvasFrame("做好自己!--eguid!", CanvasFrame.getDefaultGamma() / grabber.getGamma());
		cFrame.setAlwaysOnTop(true);
		cFrame.setVisible(true);
		// 水印文字位置
		Point point1 = new Point(10, 50);
		Point point2 = new Point(200, 200);
		Point point3 = new Point(200, 240);
		// 颜色
		Scalar scalar1 = new Scalar(0, 255, 255, 0);
		Scalar scalar2 = new Scalar(255, 0, 0, 0);
		Frame frame = null;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		int index = 0;
		// 关闭窗口即停止运行
		while (cFrame.isShowing()) {
			if ((frame = grabber.grabFrame()) != null) {
				// 取一帧视频(图像),并转换为Mat
				Mat mat = converter.convertToMat(grabber.grabFrame());

				// 加文字水印,opencv_imgproc.putText(图片,水印文字,文字位置,字体,字体大小,字体颜色,字体粗度,文字反锯齿,是否翻转文字)
				opencv_imgproc.putText(mat, "eguid!", point2, opencv_imgproc.CV_FONT_VECTOR0, 2.2, scalar2, 1, 0,
						false);
				// 翻转字体,文字平滑处理(即反锯齿)
				opencv_imgproc.putText(mat, "eguid!", point3, opencv_imgproc.CV_FONT_VECTOR0, 2.2, scalar2, 1, 20,
						true);

				opencv_imgproc.putText(mat, sdf.format(new Date()), point1, opencv_imgproc.CV_FONT_ITALIC, 0.8, scalar1,
						2, 20, false);
				// 在窗口显示处理后的图像,Frame frame=converter.convert(mat);
				cFrame.showImage(converter.convert(mat));
				if (index == 0) {
					// 保存第一帧图片到本地
					opencv_imgcodecs.imwrite("eguid.jpg", mat);
				}
				// 释放Mat资源
				mat.release();
				mat.close();

			}
			Thread.sleep(40);
			index++;
		}

		cFrame.dispose();// 销毁窗口
		grabber.stop();// 停止抓取器

		// 手动释放资源
		scalar1.close();
		scalar2.close();
		point1.close();
		point2.close();
		point3.close();

支持eguid原创

 

 

3、演示

csdn的文字水印请自动忽略,只有左上角日期和中间两个蓝色的eguid!是本程序添加的

 

 

 

 

 

 

 

 

2019-07-08 15:38:02 Osean_li 阅读数 155

引言

直方图广泛运用于很多计算机视觉运用当中。
参考整理的很好

什么是图像直方图?

通过标记帧与帧之间显著的边缘和颜色的统计变化,来检测视频中场景的变化。在每个兴趣点设置一个有相近特征的直方图所构成 “标签”,用以确定图像中的兴趣点。边缘,色彩,角度等直方图构成了可以被传递给目标识别分类器的一个通用特征类型

直方图就是数据进行统计的一种方法

  • 且具有图像平移、旋转、缩放不变性等众多优点。直方图在进行图像计算处理时代价较小,所以经常用于图像处理!
  • 直方图是一种对数据分布情况的图形表示,是一种二位统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量
  • 直方图是图像中像素强度分布的图形表达式
  • 它统计了每一个强度值所具有的像素个数

如何读懂直方图?

直方图的显示方式是左暗又亮,左边用于描述图像的暗度,右边用于描述图像的亮度
在这里插入图片描述

2018-08-15 18:00:35 qq_41905045 阅读数 103

目标

在这一章,

我们将学习使用分水岭算法来使用基于标记的图像分割

我们将会看到:cv.watershed()

理论

任何灰度图像都可以被看作是一个地形面,高强度表示山峰和山丘,而低强度则表示山谷。你开始用不同颜色的水(标签)填充每个孤立的山谷(局部最小值)。随着水的上升,取决于附近的山峰(梯度),来自不同山谷的水,显然有不同的颜色会开始融合。为了避免这种情况,你在水合并的地方设置障碍。你继续工作,填满水,筑起屏障,直到所有的山峰都在水下。然后你创建的障碍会给你一个分割结果。这就是分水岭背后的“哲学”。您可以在一些动画的帮助下访问分水岭的CMM页面来理解它。

但是这种方法会给你由于噪音或图像中任何其他不规则的结果而导致的过度分割的结果。所以OpenCV实现了一个基于标记的分水岭算法,你可以在其中指定哪些是所有的谷点被合并,哪些不是。这是一个交互式图像分割。我们要做的是给我们的对象提供不同的标签。把我们确定为前景或物体的区域标记为一种颜色(或强度),将我们确定为背景或非物体的区域标记为另一种颜色,最后是我们不确定的区域,用0标记它。这是我们的标志。然后应用分水岭算法。然后我们的标记将会被我们给出的标签更新,对象的边界值为-1。

代码

下面我们将看到一个关于如何使用距离变换和分水岭来分割相互接触的物体的例子。

考虑下面的硬币图像,硬币是相互接触的。即使你对它进行了阈值,它也会相互接触。

现在我们需要清除图像中任何细小的白色噪声。为此我们可以使用形态学的开口。为了清除物体上的任何小洞,我们可以使用形态学闭合。所以,现在我们可以确定,靠近物体中心的区域是前景和区域远离物体的背景。只有我们不确定的区域是硬币的边界区域。

所以我们需要提取出我们确信它们是硬币的区域。侵蚀消除了边界像素。所以不管剩下什么,我们都可以确定它是硬币。如果物体没有相互接触,那就会起作用。但是由于它们相互接触,另一个好的选择是找到距离转换并应用一个适当的阈值。接下来,我们需要找到我们确信它们不是硬币的区域。为此,我们扩大了结果。膨胀增加了物体的边界到背景。通过这种方式,我们可以确保背景中的任何区域都是真正的背景,因为边界区域被移除。见下面的图片。

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt

img = cv.imread('water_coins.jpg')
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
ret, thresh = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV+cv.THRESH_OTSU)


# noise removal
kernel = np.ones((3,3),np.uint8)
opening = cv.morphologyEx(thresh,cv.MORPH_OPEN,kernel, iterations = 2)

# sure background area
sure_bg = cv.dilate(opening,kernel,iterations=3)

# Finding sure foreground area
dist_transform = cv.distanceTransform(opening,cv.DIST_L2,5)
ret, sure_fg = cv.threshold(dist_transform,0.7*dist_transform.max(),255,0)

# Finding unknown region
sure_fg = np.uint8(sure_fg)
unknown = cv.subtract(sure_bg,sure_fg)

# Marker labelling
ret, markers = cv.connectedComponents(sure_fg)

# Add one to all labels so that sure background is not 0, but 1
markers = markers+1

# Now, mark the region of unknown with zero
markers[unknown==255] = 0

markers = cv.watershed(img,markers)
img[markers == -1] = [255,0,0]

cv.imshow('dst',img)
cv.waitKey(0)
cv.destroyAllWindows()

 

 

div中img显示问题

阅读数 1335

Tkinter的标签使用

阅读数 267

没有更多推荐了,返回首页