社区
图形处理/算法
帖子详情
求【8位灰度图像】转换为【8位256色图像】或【24位真彩图像】算法【黑白型】!!!
南山五味子
2012-07-11 10:05:45
求【8位灰度图像】转换为【8位256色图像】或【24位真彩图像】算法【黑白型】!!!可以保持原有的黑白色调!
...全文
322
6
打赏
收藏
求【8位灰度图像】转换为【8位256色图像】或【24位真彩图像】算法【黑白型】!!!
求【8位灰度图像】转换为【8位256色图像】或【24位真彩图像】算法【黑白型】!!!可以保持原有的黑白色调!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
南山五味子
2012-07-16
打赏
举报
回复
具体咋实现哦,有源码么?
lc519652604
2012-07-15
打赏
举报
回复
大部分处理方法都会失真,双线性插值,三线性插值都会失真,最临近插值算法和线性插值混用最多:
大概思路:
1、新的高度和宽度除以原来的高度和宽度得到两个比之分别记为:B1,B2(假如B1>B2);
2、先把图像扩大小的B2倍,
3、在用B1除以B2,把宽度用线性插值扩大B1除以B2的倍数
主要就是这个思路,具体编程的话我就不复制了,去网上下一个,对着这个思路改一下就是自己的了
南山五味子
2012-07-14
打赏
举报
回复
自己顶了!
南山五味子
2012-07-12
打赏
举报
回复
(HBITMAP)::LoadImage(NULL, m_strBmpPath+"\\res\\bk.bmp", IMAGE_BITMAP, 0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE| LR_LOADFROMFILE);
CBitmap.LoadImage(IDC_BMP)
这两个用法有什么差别!当bk.bmp为8位灰度图,在做透明图像的时候用了第一种方法就不能透明,且将前景图像的颜色自动运算成灰度了;第二种方法就正常,前景图像为24位RGB图,实现透明效果,且颜色不失真。
TransparentBlt2( HDC hdcDest, // 目标DC
int nXOriginDest, // 目标X偏移
int nYOriginDest, // 目标Y偏移
int nWidthDest, // 目标宽度
int nHeightDest, // 目标高度
HDC hdcSrc, // 源DC
int nXOriginSrc, // 源X起点
int nYOriginSrc, // 源Y起点
int nWidthSrc, // 源宽度
int nHeightSrc, // 源高度
UINT crTransparent // 透明色,COLORREF类型
)
{
HBITMAP hOldImageBMP, hImageBMP = CreateCompatibleBitmap(hdcDest, nWidthDest, nHeightDest); // 创建兼容位图
HBITMAP hOldMaskBMP, hMaskBMP = CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL); // 创建单色掩码位图
HDC hImageDC = CreateCompatibleDC(hdcDest);
HDC hMaskDC = CreateCompatibleDC(hdcDest);
hOldImageBMP = (HBITMAP)SelectObject(hImageDC, hImageBMP);
hOldMaskBMP = (HBITMAP)SelectObject(hMaskDC, hMaskBMP);
// 将源DC中的位图拷贝到临时DC中
if (nWidthDest == nWidthSrc && nHeightDest == nHeightSrc)
BitBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, hdcSrc, nXOriginSrc, nYOriginSrc, SRCCOPY);
else
StretchBlt(hImageDC, 0, 0, nWidthDest, nHeightDest,
hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, SRCCOPY);
// 设置透明色
SetBkColor(hImageDC, crTransparent);
// 生成透明区域为白色,其它区域为黑色的掩码位图
BitBlt(hMaskDC, 0, 0, nWidthDest, nHeightDest, hImageDC, 0, 0, SRCCOPY);
// 生成透明区域为黑色,其它区域保持不变的位图
SetBkColor(hImageDC, RGB(0,0,0));
SetTextColor(hImageDC, RGB(255,255,255));
BitBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);
// 透明部分保持屏幕不变,其它部分变成黑色
SetBkColor(hdcDest,RGB(0xff,0xff,0xff));
SetTextColor(hdcDest,RGB(0,0,0));
BitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);
// "或"运算,生成最终效果
BitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hImageDC, 0, 0, SRCPAINT);
SelectObject(hImageDC, hOldImageBMP);
DeleteDC(hImageDC);
SelectObject(hMaskDC, hOldMaskBMP);
DeleteDC(hMaskDC);
DeleteObject(hImageBMP);
DeleteObject(hMaskBMP);
}
fengbingchun
2012-07-11
打赏
举报
回复
看看OpenCV的cvCvtColor源码
软件工程专题四:多媒体专题
也叫
黑白
图象,它是按
图像
点阵形式存储各像素的颜
色
编码或灰度级。
位
图适于表现含有大量细节的画面,并可直接、快速地显示或印出。其存储量大,一般需要压缩存储。 ●矢量图 它用一组指令或参数来描述其中的各个...
真彩
图像
、索引
图像
、
灰度
图像
、二值
图像
的区别以及使用MATLAB对其相互
转换
彩
色
图像
可以
转换
为
灰度
图像
,
灰度
图像
可以
转换
成二值
图像
彩
色
图像
可以
转换
成索引
图像
,索引
图像
可以
转换
成
灰度
图像
,
灰度
图像
可以
转换
成二值
图像
索引
图像
可以直接
转换
成彩
色
图像
,
灰度
图像
不可以直接
转换
成彩
色
...
图像
相关
算法
与
图像
相关的
算法
,全部从零开始写,入门级别, 例如:RGB 转灰度图,
图像
的膨胀腐蚀,
图像
的卷积,
图像
模糊,
图像
降噪,边缘提取等。 一些与
图像
相关的
算法
,例如: fast角点提取, brief,surf,特征点匹配等
24
位
真彩
色
转换
为8
位
灰度图片(完整代码)
图像
的灰度与二值化 http://www.cnblogs.com/maozefa/archive/2011/12/09/2281656.html
图像
的灰度化与二值化是
图像
处理中最常见的处理方法,也是很多
图像
处理方法的基础,如
图像
灰度统计、
图像
识别等。 ...
图像
基础,C++,python灰度图
转换
一丶RGB和灰度图的
转换
介绍 RGB图:一幅完整的RGB图是由红
色
、绿
色
、蓝
色
三个通道组成的。RBG调
色
器大家玩玩, 下面这张图来自知乎 ...灰度图与RGB
图像
转换
:任何颜
色
都有红、绿、蓝三原
色
组成,假如原...
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章