在图像上画线(给出任意两个点)c代码实现
来源:互联网 发布:釉中彩餐具安全吗 知乎 编辑:程序博客网 时间:2024/05/29 07:37
//防止图像出界的函数int clamp_s(int value, int m_min, int m_max){ int mm_ret = value; if(value < m_min) { mm_ret = m_min; }else if(value > m_max) { mm_ret = m_max; } return mm_ret;}// data 图像数据// width图像宽度// height图像高度// channel图像通道// x0 第一个坐标x// y0 第一个坐标y// x1 第2个坐标x// y1 第2个坐标y// shinner 线条宽度// red 红色通道值// gree红色通道值// blue红色通道值int LiDrewLine_Source(unsigned char * data, int width, int height, int channel, int x0, int y0, int x1, int y1, int shinner, unsigned char red, unsigned char gree, unsigned char blue){ float a = 0; float b = 0; int i = 0; int j = 0; int k = 0; int m = 0; unsigned char color[4] = {red, gree, blue, 0}; int minx = 0; int maxx = 0; int miny = 0; int maxy = 0; float yy = 0.0f; float xx = 0.0f; if(x0 > x1) { maxx = x0; minx = x1; }else { maxx = x1; minx = x0; } if(y0 > y1) { maxy = y0; miny = y1; }else { maxy = y1; miny = y0; } if(maxy - miny > maxx - minx) { a = (x1 - x0) * 1.0f / (y1 - y0); b = x0 * 1.0f - a * y0; for(i = miny; i <= maxy; i ++) { xx = a * i + b; m = (int)xx; for(j = m - shinner; j <= m + shinner; j ++) { for(k = 0; k < channel; k ++) { data[(clamp_s(i, 0, height - 1) * width + clamp_s(j, 0, width - 1)) * channel + k] = color[k]; } } } }else { a = (y1 - y0) * 1.0f / (x1 - x0); b = y0 * 1.0f - a * x0; for(i = minx; i <= maxx; i ++) { yy = a * i + b; m = (int)yy; for(j = m - shinner; j <= m + shinner; j ++) { for(k = 0; k < channel; k ++) { data[(clamp_s(j, 0, height - 1) * width + clamp_s(i, 0, width - 1)) * channel + k] = color[k]; } } } } return 0;}
0 0
- 在图像上画线(给出任意两个点)c代码实现
- matlab 在图像上标注关键点 小代码
- 求一个点到任意两个点所在直线距离的代码公式(增加推理)
- 数量积 向量的点积 即3D中任意两个三维向量的点积(数量积)推导及代码实现
- 平面任意二点之间画线
- 在label上画线
- 医院管理系统(实现功能:浏览医院的整体结构,给定任意节点输出该节点信息就子节点信息,计算在给出点之间的“病房的数量”)
- Google地图上任意两个点的距离
- MapX画线画点代码
- SAD算法在opencv上的实现代码(c++)
- 点在任意直线上的投影点
- c c++ 画点 画线
- 在flash课件中用鼠标任意画线
- 抓取当前界面上任意控件图像的C#代码
- 编程实现任意长度的两个正整数相加 代码实现
- 在页面上画线段
- MFC在窗体上画线
- HDU 1756 Cupid's Arrow(判断点是否在任意多边形上且包括边)
- IIS添加mime类型
- verilog练习
- ViewHolder为什么是被设计成static类型的
- noip2016普及组复赛总结
- c语言照样解决脑筋急转弯
- 在图像上画线(给出任意两个点)c代码实现
- 最详细的Log4j使用教程
- ubuntu下有道字典
- Nexus6p优化
- Android之垂直跑马灯
- 《okhttp返回json数据:com.squareup.okhttp.internal.http.RealResponseBody@2b88614》
- 自建网页项目-蚁族财富网-记录15
- 资源汇总
- hdu1331 Function Run Fun(记忆化搜索)