精华内容
下载资源
问答
  • js图片对角线滚动鼠标特效是一款基于gsap制作的全屏图片对角线布局,鼠标滑块滚动图片对角线展示特效。
  • Glide加载圆形图片和自定义圆角图片,可自己设置圆角大小,可以指定的进行加载圆角,自定义圆角大小
  • 之前在群里看到有人求助如何沿对角线把一幅图像分成两幅图像,自己就试了一下,然而现在只能把方形图片分开,矩形的还在研究中。 主要方法就是先把矩形图片resize成方形的,然后用循环分割开来。 对于矩形图片对角...

    本文由@星沉阁冰不语出品,转载请注明作者和出处。

    文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/50547897

    微博:http://weibo.com/xingchenbing 


    学习opencv和C++已经有一段时间了,现在开始写一些小程序练手。在这里做一个记录。

    之前在群里看到有人求助如何沿对角线把一幅图像分成两幅图像,自己就试了一下,然而现在只能把方形图片分开,矩形的还在研究中。

    主要方法就是先把矩形图片resize成方形的,然后用循环分割开来。

    对于矩形图片的对角线分割,不知道为啥一直能成功。还在研究中。

    方形图片分割实现代码如下:

    #include<opencv2\core\core.hpp>
    #include<opencv2\highgui\highgui.hpp>
    #include<opencv2\imgproc\imgproc.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main()
    {
    	Mat src;
    	src = imread("mai1.jpg", 0);
    	if (src.rows > src.cols)
    	{
    		resize(src,src,Size(src.cols,src.cols));
    	}
    	else
    	{
    		resize(src, src, Size(src.rows, src.rows));
    	}
    	Mat dst1(src.rows, src.cols, CV_8UC1,Scalar::all(0));
    	Mat dst2(src.rows, src.cols, CV_8UC1,Scalar::all(0));
    	
    
    	for (double i = 1; i < src.rows; i++)
    	{
    		for (double j = 0; j < src.cols; j++)
    		{
    			if( j>=i &&i>=0 && i<src.rows && j>=0 && j<src.cols )
    			{
    				dst1.at<uchar>(Point(j,i)) = src.at<uchar>(Point(j,i));
    			}
    			if (j<i &&i >= 0 && i<src.rows&&j >= 0 && j<src.cols )
    			{
    				dst2.at<uchar>(i, j) = src.at<uchar>(i, j);
    			}
    		}
    	}
    	Point a = Point(0, 0);
    	Point b = Point(src.cols, src.rows);
    	line(src, a, b, Scalar(255, 255, 0),1);
    	imshow("src", src);
    	imshow("dst1", dst1);
    	imshow("dst2", dst2);
    
    	waitKey(0);
    	return 0;
    }
    结果如下图所示: 对角分割.jpg



    展开全文
  • 在假期之前曾试图实现矩形图片对角线分割这么一个简单的任务。结果正方形的实现了,详见 OpenCV实践之路——方形图片对角线切割。矩形的时候总是出现一些我不能理解的错误,大概值指针越界之类的。当时对于图像像素...


    本文由@星沉阁冰不语出品,转载请注明作者和出处。

    文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/50709047

    微博:http://weibo.com/xingchenbing 


    在假期之前曾试图实现矩形图片对角线分割这么一个简单的任务。结果正方形的实现了,详见 OpenCV实践之路——方形图片对角线切割。矩形的时候总是出现一些我不能理解的错误,大概值指针越界之类的。当时对于图像像素边界的理解非常有限,这就是所谓的历史局限性吧。今天借助IamgeWatch对像素进行了深入的探究之后,详见OpenCV实践之路——像素初探。对于像素操作的理解前所未有地清晰。于是再次去实现了一下矩形对角分割。

    其实思想很简单,只是由于当时我水平还不够才觉得很难。就是做出对角线,然后判断,如果某一点在直线这一片,复制到image1,否则复制到image2。对于没有值另外一半,给其赋个值。我是选择的喵星人眼睛的颜色赋值的。

    代码很简单:

    #include<opencv2\core\core.hpp>
    #include<opencv2\highgui\highgui.hpp>
    
    using namespace cv;
    using namespace std;
    
    int main(int argc,char* argv[])
    {
    	Mat image = imread(argv[1]);	
    	int x1 = 0, y1 = 0;
    	int x2 = image.cols - 1, y2 = image.rows-1;
    	
    	Mat image1(image.rows, image.cols, CV_8UC3, Scalar(180,120,50));
    	Mat image2(image.rows, image.cols, CV_8UC3, Scalar(180, 120, 50));
    
    	for (int x = 0; x < image.cols; x++)
    	{
    		for (int y = 0; y < image.rows; y++)
    		{	
    			//如果在直线之下,赋值到image1,注意图片的坐标系y是越向下越大的
    			if ((y - y2)*(x1 - x2) - (x - x2)*(y1 - y2) >= 0)
    			{
    				image1.at<Vec3b>(Point(x, y)) = image.at<Vec3b>(Point(x, y));
    			}
    
    			//如果在直线之上,复制到image2
    			else
    			{
    				image2.at<Vec3b>(Point(x, y)) = image.at<Vec3b>(Point(x, y));
    			}		
    		}
    	}
    	imshow("image", image);
    	imshow("image1", image1);
    	imshow("image2", image2);
    
    	while (char(waitKey(1)) != 'q'){}
    	return 0;
    	
    }


    效果如下图:





    展开全文
  • android中Bitmap图片设置任意为圆角
  • 最近在做李宁的一个项目,要求特别高,所以今天记录一下自己遇到的难点,希望初学者有用!本来想着用android系统图库的原来实现的,但是图片加密解密麻烦,图片也不让放本地。 流转换Bitmap的方法 public Bitmap ...

    最近在做李宁的一个项目,要求特别高,所以今天记录一下自己遇到的难点,希望对初学者有用!本来想着用android系统图库的原来实现的,但是图片加密解密麻烦,图片也不让放本地。

    流转换Bitmap的方法

    public Bitmap doBitmapFile(InputStream in, boolean isFlag) {// isFlag是一个标志 true表示是大图  false小图
    		Bitmap bitmap = null;//
    		BitmapFactory.Options options = null;
    		ByteArrayOutputStream outStream = null;
    		final int BUFFER_SIZE = 2048;
    		if (in == null) {
    			return null;
    		}
    		try {
    			outStream = new ByteArrayOutputStream();
    			byte[] bytes = new byte[BUFFER_SIZE];
    			int len = -1;
    			while ((len = in.read(bytes)) != -1) {
    			        outStream.write(bytes, 0, len);
    				outStream.flush();
    			}
    			byte[] data = new byte[outStream.toByteArray().length];
    			data = outStream.toByteArray();
    			options = new BitmapFactory.Options();
    			// 这里设置true的时候,decode时候Bitmap返回的为空, 将图片宽高读取放在Options里.
    			options.inJustDecodeBounds = true;
    			options.inTempStorage = new byte[16 * 1024];
    			options.inPreferredConfig = Bitmap.Config.ARGB_8888;
    			options.inInputShareable = true;
    			options.inPurgeable = true;
    			options.inDither = false;
    			BitmapFactory.decodeByteArray(data, 0, data.length, options);
    			if (isFlag) {// 计算浏览单张图片的缩放比例值
    				int totalSize = 0;
    				int width = options.outWidth;
    				int height = options.outHeight;
    				totalSize = width * height * 4;//计算图片内存占用大小
    				if (totalSize < 13631488) {
    					options.inSampleSize = 1;
    				} else {
    					int maxNumOfPixels = 1280 * 1280 * 2;
    					options.inSampleSize = computeSampleSize(options, -1, maxNumOfPixels);
    				}
    			} else {// 计算浏览列表显示图片的缩放比例值
    				int maxNumOfPixels = MAX_RESOLUTION_A * MAX_RESOLUTION_B * 2;
    				options.inSampleSize = computeSampleSize(options, -1, maxNumOfPixels);
    				options.outWidth = options.outWidth / options.inSampleSize;
    				options.outHeight = options.outHeight / options.inSampleSize;
    			}
    			options.inJustDecodeBounds = false;
    			bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options);
    			return watermarkBitmap(recycleBitmap(bitmap), "水印文字内容", Context, options);
    		} catch (OutOfMemoryError e) {
    			bitmap = null;
    			System.gc();
    			Log.e("Eeron", e.getMessage().toString());
    			e.printStackTrace();
    			return null;
    		} catch (Exception e) {
    			bitmap = null;
    			System.gc();
    			Log.e("Eeron", e.getMessage().toString());
    			return null;
    		} finally {
    			closeStream(in);
    			closeStream(outStream);
    		}
    	}
    
    	/**
    	 * @Description: 关闭流
    	 * @param stream
    	 * @return: void
    	 */
    	private static void closeStream(Closeable stream) {
    		if (stream != null) {
    			try {
    				stream.close();
    			} catch (IOException e) {
    				Log.e("LiNing", "Could not close stream", e);
    			}
    		}
    	}</span>
    
    水印添加方法:

            /**
    	 * @Description: 添加水印
    	 * @param bitmap
    	 * @param title
    	 * @param context
    	 * @return
    	 * @return: Bitmap
    	 */
    	public static Bitmap watermarkBitmap(Bitmap bitmap, String title, Context context, Options options) {
    		if (bitmap == null) {
    			return null;
    		}
    		Bitmap watermark = BitmapFactory.decodeResource(context.getResources(), R.drawable.add_water_mark, options);
    		int w = bitmap.getWidth();
    		int h = bitmap.getHeight();
    		// 需要处理图片太大造成的内存超过的问题,这里我的图片很小所以不写相应代码了
    		Bitmap newb = Bitmap.createBitmap(w, h, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
    		Canvas cv = new Canvas(newb);
    		cv.drawBitmap(bitmap, 0, 0, null);// 在 0,0坐标开始画入src
    		// 加入图片
    		if (watermark != null) {
    			int ww = watermark.getWidth();
    			int wh = watermark.getHeight();
    			Rect src = new Rect();// 图片
    			Rect dst = new Rect();// 屏幕位置及尺寸
    			src.left = 0; // 0,0
    			src.top = 0;
    			src.right = w;// 是桌面图的宽度,
    			src.bottom = h;// 是桌面图的高度
    			// 下面的 dst 是表示 绘画这个图片的位置
    			dst.left = 0; // 绘图的起点X位置
    			dst.top = 0; // 相当于 桌面图片绘画起点的Y坐标
    			dst.right = ww + w - 60; // 表示需绘画的图片的右上角
    			dst.bottom = wh + h - 60; // 表示需绘画的图片的右下角
    			cv.drawBitmap(watermark, src, dst, null);// 在src的右下角画入水印
    			src = null;
    	        dst = null;
    		}
    		// 加入文字
    		if (title != null) {
    			String familyName = "宋体";
    			Typeface font = Typeface.create(familyName, Typeface.BOLD);
    			TextPaint textPaint = new TextPaint();
    			textPaint.setColor(Color.RED);
    			textPaint.setTypeface(font);
    			textPaint.setTextSize(22);
    			textPaint.setAlpha(50);
    			cv.drawText(title, 40, h - 30, textPaint);
    		}
    		cv.save(Canvas.ALL_SAVE_FLAG);// 保存
    		cv.restore();// 存储
    		watermark.recycle();
    		bitmap.recycle();
    		return recycleBitmap(newb);
    	}</span>
    Bitmap内存释放方法:

            public static Bitmap recycleBitmap(Bitmap bitmap) {
    		if (bitmap == null || bitmap.getConfig() != null) {
    			return bitmap;
    		}
    		Bitmap newBitmap = bitmap.copy(Config.ARGB_8888, false);
    		bitmap.recycle();
    		return newBitmap;
    	}

    动态计算options.inSampleSize的方法,这个是我从android系统图库里面弄过来的

            /**
    	 * @Description:
    	 * @param options
    	 * @param minSideLength
    	 * @param maxNumOfPixels
    	 * @return 动态计算出图片的inSampleSize
    	 * @return: int
    	 */
    public static int computeSampleSize(BitmapFactory.Options options, int minSideLength, int maxNumOfPixels) {
    		int initialSize = computeInitialSampleSize(options, minSideLength, maxNumOfPixels);
    		int roundedSize;
    		if (initialSize <= 8) {
    			roundedSize = 1;
    			while (roundedSize < initialSize) {
    				roundedSize <<= 1;
    			}
    		} else {
    			roundedSize = (initialSize + 7) / 8 * 8;
    		}
    		return roundedSize;
    	}
    
    private static int computeInitialSampleSize(BitmapFactory.Options options, int minSideLength, int maxNumOfPixels) {
    		double w = options.outWidth;
    		double h = options.outHeight;
    		// Math.ceil(Math.sqrt(w * h / maxNumOfPixels)) :w * h /
    		// maxNumOfPixels平方结果的小数部分一律向整数部分进位
    		int lowerBound = (maxNumOfPixels == UNCONSTRAINED) ? 1 : (int) Math.ceil(Math.sqrt(w * h / maxNumOfPixels));
    		// Math.floor(w / minSideLength) 将w / minSideLength结果值一律舍去小数,仅保留整数
    		int upperBound = (minSideLength == UNCONSTRAINED) ? 128 : (int) Math.min(Math.floor(w / minSideLength), Math.floor(h / minSideLength));
    		if (upperBound < lowerBound) {
    			return lowerBound;
    		}
    		if ((maxNumOfPixels == UNCONSTRAINED) && (minSideLength == UNCONSTRAINED)) {
    			return 1;
    		} else if (minSideLength == UNCONSTRAINED) {
    			return lowerBound;
    		} else {
    			return upperBound;
    		}
    	}




    展开全文
  • 对角矩阵(特殊矩阵)

    千次阅读 多人点赞 2018-11-02 23:18:14
    一个三对角矩阵的非零系数在三条对角线上:主对角线、低对角线、高对角线。其余元素全为0。 三对角矩阵的特点: 三对角矩阵M是一个对角矩阵,当且仅当 时,有M(i,j)=0。在一个nxn的三对角矩阵T中,非0元素排列在如下...

    特殊矩阵之三对角矩阵

    一开始在网上搜了好多,结果题目和答案不对应,有的答案直接不对,没办法,看的书然后自己慢慢分析做的。具体如下:

    一个三对角矩阵的非零系数在三条对角线上:主对角线、低对角线、高对角线。其余元素全为0。

    三对角矩阵的特点:
    三对角矩阵M是一个对角矩阵,当且仅当
    时,有M(i,j)=0。在一个nxn的三对角矩阵T中,非0元素排列在如下的三条对角线上:
    (1)主对角线即i=j;
    (2)主对角线之下的对角线(称低对角线)即i=j+1;
    (3)主对角线之上的对角线(称高对角线)即i=j-1。
    这三条对角线上的元素总数为3n-2,故可以使用一个拥有3n-2个位置的一维数组来描述T,因为仅需要存储三条对角线上的元素

    设有三对角矩阵(aijnxn,将其三条对角线上的元素朱行地存于向量B[3n-1]中(其中零号单元存放三对角线外的常量C),使得B[K]=aij,求:
    (1) 用i j 表示k的下标变换公式;
    (2)用k表示i及j的下标变换公式;

    自己画的,有错误还请指出。

    上面图片中的四阶矩阵,是一个三对角矩阵,每个元素的位置都在图中标出,转化成一维数组的位置也已经标出。

    所以此题的答案为:

    (1)
    k=2*i + j + 1, |i-j| <= 1
    k=0 , 其它

    (2)
    i = (k-j-1)/2;
    j = k-2i-1;

    如果还有不明白的地方,可以在下方留言。

    展开全文
  • Android 图片设置圆角

    万次阅读 多人点赞 2019-05-17 19:02:30
    Android中经常会遇到对图片进行二次处理,例如加圆角,或者显示圆形图片 实现的效果图: 方法一: 通过第三方框架Glide实现图片显示有圆角,有三种写法如下: 1.1,第一种实现: RequestOptions options = ...
  • Python对二维矩阵沿主对角线(次对角线)翻转变换代码实现 目录Python对二维矩阵沿主对角线(次对角线)翻转变换代码实现1. 原始数据以及图示2. 主对角线翻转及图示3. 次对角线翻转结果4. 完整代码,如有疑问,欢迎...
  • 对角矩阵的压缩存储

    千次阅读 2020-03-31 16:29:29
    对角矩阵的压缩存储什么是对角矩阵矩阵的压缩1,当带宽b=1时2,当b不等于1.且b小于n/2 什么是对角矩阵 定义 若一个n阶方阵A满足其所有非零元素都集中在以主对角为中心的带状区域中,则称其为n阶对角矩阵(diagonal ...
  • 1.Glide加载圆形图片: 自定义GlideCircleTransUtils继承BitmapTransformation,重写transform()方法; public class GlideCircleTransUtils extends BitmapTransformation { public GlideCircl...
  • PHP将图片处理成圆角

    千次阅读 2015-10-27 15:27:42
    我们可能在很多项目中,需要对图片进行圆角处理,例如HTML5中,例如Android中; 这里我们说说用PHP对图片进行圆角处理的方法; 圆角处理的方法有很多,这里我就只说说我的项目中是增么圆角进行处理的; ...
  • 实现效果如下: 实现思路: 使用鼠标的按下事件onmousedown ... 由于html的map的area 是无法设置样式的,hover也其无效,如果想要设置悬浮效果改变样式,可以通过给area设置鼠标的mouseover事件去操作dom ...
  • ***知识点:理解对角线与熟悉二维数组的下标。 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。 ...
  • 本文基于大众化图片加载库Universal-Image-Loader中的RoundedBitmapDisplayer源码进行拓展,自定义了一个FlexibleRoundedBitmapDisplayer,可以用简单快捷的代码指定图片的某几个为圆角,某几个不为圆角。
  • Android UI设计中,不得不用到带圆角的图片或者背景。今天就和大家分享一下,如何实现图片或背景圆角,也可实现半部分圆角。先来看一下效果图~   上面两个图分别是实现上半部分圆角&下半部分直角和全部圆角,同样,...
  • 如何把一张四图片变成圆角的图片呢? 估计是很多朋友比较关心的问题,今天工作原因,遇到了这个问题,终于让我找到了解决方案,其实只需3步就可以了,下面分享给需要的朋友: 步骤一: 用PS打开一张图片,...
  • 对角行列式公式:

    千次阅读 2019-11-03 23:27:59
    (-1)^([n*(n-1)]/2) 冒泡排序对换。
  • python绘制1:1对角线(1:1 line)

    千次阅读 2021-01-06 09:42:52
    本文基于python绘制1:1对角线并x、y数据之间的R方。 效果图: 蓝色线表示拟合线,黑色线表示1:1线。 详细代码: import matplotlib.pyplot as plt import numpy as np import pandas as pd from pylab import mpl ...
  • 引用文章: NumPy矩阵的旋转 http://liao.cpython.org/numpy13/
  • 不知道该怎么做,怎么对角线上全部添0![图片](https://img-ask.csdn.net/upload/201601/19/1453179489_695273.png)
  • 题目:求出一张图片的傅里叶变换后的频谱和相,并分别用频谱、相、频谱+相进行图形重构。 流程: 1、原灰度图像进行傅里叶变换 2、求出原灰度图像的频谱和相 3、频谱和相进行重建 4、分别用频谱+相...
  • 请教大家....对于一个矩形,要以从左上到右下的对角线为轴进行旋转,要怎么设置rotateX(),rotateY(),rotateZ()的参数?? 或者是别的方法??
  • 本文主要实现了图像的批量水平镜像,垂直镜像,对角镜像功能,希望对你有所帮助! 2源代码 import cv2 as cv import os def image_extend(source_path,save_path): ''' 训练数据增强:水平镜...
  • 特征值(特征向量)与相似对角

    千次阅读 2020-06-18 10:36:33
    ​∣u n​∣​⎠⎞​ 相似对角化 条件:A有n个线性无关的特征向量,即:P (特征向量矩阵) 可逆 A含有n个不同的特征值,或者特征值中的k重特征值对应有k个线性无关的特征向量,则A可以相似对角化 实现矩阵对角化 main...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 239,750
精华内容 95,900
关键字:

对角图片