stretchdibitsStretchDIBits是什么?麻烦告诉我

stretchdibits  时间:2021-01-10  阅读:()

请问 opencv有 灰度图转为2值图像的函数吗?

我想这个可以用函数cvthreshold()来实现,设置好一个阈值,就可以将灰度图转换为二值图,你觉得呢? 形式:void cvThreshold( const CvArr* src, CvArr* dst, double threshold, double max_value, int threshold_type );   src:原始数组 (单通道 , 8-bit of 32-bit 浮点数)。

dst:输出数组,必须与 src 的类型一致,或者为 8-bit。

  threshold:阈值   max_value:使用 CV_THRESH_BINARY 和 CV_THRESH_BINARY_INV 的最大值。

  threshold_type:阈值类型 threshold_type=CV_THRESH_BINARY:   如果 src(x,y)>threshold ,dst(x,y) = max_value; 否则,des(x,y)=0;   threshold_type=CV_THRESH_BINARY_INV:   如果 src(x,y)>threshold,dst(x,y) = 0; 否则,dst(x,y) = max_value.   threshold_typ

为什么下载图片在手机里,都不能看不来大神们帮帮忙

格式也是一个,如果是诺基亚手机,需要放在相应的文件夹里才能看到,比如s60手机是放在imges文件夹

GetBitmapBits和GetDIBits的区别

如果我们的CBitmap是得到设备兼容的位图:即:CreateCompatibleBitmap来创建的位图,则最好使用 GetDIBits得到位图数据; ::GetDIBits(memdc.m_hDC, btp, 0, bp.bmHeight, pData, pBpInfo, DIB_RGB_COLORS); 之后就可以根据位图数据显示该位图了 // 在客户区显示位图 CClientDC dc(this); StretchDIBits(dc.m_hDC, 0, 0, bp.bmWidth, bp.bmHeight, 0, 0, bp.bmWidth, bp.bmHeight, pData, pBpInfo, DIB_RGB_COLORS, SRCCOPY); 也可以利用GetBitmapBits得到位图信息,但是得到的位图数据需要转化才与本来位图实际数据对应。

// 对于与设备兼容的位图,用GetBitmapBits得到的位图数据需要转换才可以正确显示位图 // 用GetBitmapBits,然后交换每行数据,最后再交行整个缓冲数据 // 位图本来存储格式如下: // [g....k] // [j....t] // [......] // [y....b] // [x....a] // 但是利用GetBitmapBits得到位图数据格式为 [x...a][y...b][....][j...t][g...k] // 我们需要将其转化为[g...k][j...t][...][y...b][x...a] // 步骤为:第一步将每行数据逆置,得到[a...x][b...y][...][t...j][k...g] // 第二步:将第一步得到的格式,当做一个整体,进行逆置则得到[g...k][j...t][...][y...b][x...a] dwRet = btp.GetBitmapBits(bp.bmWidthBytes * bp.bmHeight, pData); // 该方式获取位图信息,位图对象应该是LoadBitmap形式获取的 int nRow = bp.bmHeight; // 行数 // 先交换每行的位图数据 char *pS = NULL, *pE= NULL; for (int j = 1; j <= nRow; j++) { pS = pData+(j-1)*bp.bmWidthBytes; pE = pData+j*bp.bmWidthBytes -1 ; SwapArray(pS, pE, bp.bmWidthBytes); } // 再交换整个数组数据 SwapArray(pData, pData+dwRet-1, dwRet); // 在客户区显示位图 CClientDC dc(this); StretchDIBits(dc.m_hDC, 0, 0, bp.bmWidth, bp.bmHeight, 0, 0, bp.bmWidth, bp.bmHeight, pData, pBpInfo, DIB_RGB_COLORS, SRCCOPY); LocalFree(pData); void SwapArray(char *pS, char *pE, int nCount) { int nMidIndex = nCount / 2; char tmp; for (int i = 0; i < nMidIndex; i ++) { tmp = *pS; *pS = *pE; *pE = tmp; pS++; pE--; } }

如何用StretchDIBits显示位图

该函数将DIB中矩形区域内像素使用的颜色数据拷贝到指定的目标矩形中。

如果目标矩形比源矩形大小要大,那么函数对颜色数据的行和列进行拉伸,以与目标矩形匹配。

如果目标矩形大小要比源矩形小,那么该函数通过使用指定的光栅操作对行列进行压缩。

  int StretchDIBits(HDC hdc, int XDest , int YDest , int nDestWidth, int nDestHeight, int XSrc, int Ysrc, int nSrcWidth, int nSrcHeight, CONST VOID *lpBits, CONST BITMAPINFO * lpBitsInfo, UINT iUsage, DWORD dwRop); 可以参考MSDN。

MFC 用 pDC-> SetPixel(i,j,RGB(255,0,0));设置像素颜色之后,怎么把设置后的值保存到原图像中?

如果你的DC已经把原图像选入,那么一切图形操作都是对这个图像进行的,不用另外保存。

StretchDIBits是什么?麻烦告诉我

如果目标矩形比源矩形大小要大,那么函数对颜色数据的行和列进行拉伸,以与目标矩形匹配。

如果目标矩形大小要比源矩形小,那么该函数通过使用指定的光栅操作对行列进行压缩。

  函数原型:int StretchDIBits(HDC hdc, int XDest , int YDest , int nDestWidth, int nDestHeight, int XSrc, int Ysrc, int nSrcWidth, int nSrcHeight, CONST VOID *lpBits, CONST BITMAPINFO * lpBitsInfo, UINT iUsage, DWORD dwRop);  参数:  hdc:指向目标设备环境的句柄。

  XDest:指定目标矩形左上角位置的X轴坐标,按逻辑单位来表示坐标。

  YDest:指定目标矩形左上角的Y轴坐标,按逻辑单位表示坐标。

  nDestWidth:指定目标矩形的宽度。

  nDestHeight:指定目标矩形的高度。

  XSrc:指定DIB中源矩形(左上角)的X轴坐标,坐标以像素点表示。

  YSrc:指定DIB中源矩形(左上角)的Y轴坐标,坐标以像素点表示。

  nSrcWidth:按像素点指定DIB中源矩形的宽度。

  nSrcHeight:按像素点指定DIB中源矩形的高度。

  lpBits:指向DIB位的指针,这些位的值按字节类型数组存储,有关更多的信息,参考下面的备注一节。

  lpBitsInfo:指向BITMAPINFO结构的指针,该结构包含有关DIB方面的信息。

  iUsage:表示是否提供了BITMAPINFO结构中的成员bmiColors,如果提供了,那么该bmiColors是否包含了明确的RGB值或索引。

参数iUsage必须取下列值,这些值的含义如下:   DIB_PAL_COLOR:表示该数组包含对源设备环境的逻辑调色板进行索引的16位索引值。

  DIB_RGB_COLORS:表示该颜色表包含原义的KGB值,若想了解更多的信息,请参考下面备注一节。

  返回值:如果函数执行成功,那么返回值是拷贝的扫描线数目,如果函数执行失败,那么返回值是GDI_CRROR。

  Windows NT:若想获取更多错误信息,请调用GetLastError函数。

  Windows 98、Windows NT 5.0及以后版本:如果设备驱动程序不支持传送给StretchDIBits的JPEG文件格式的图像,则该函数将失败,并返回GEI_ERROR。

  备注:自底向上的DIB的起始点为左下角,自顶向下DIB的起始点为左上角。

  如果nSrcWidth和nDestWidth参数的符号不同。

或是nSrcHeight和nDesHeight参数的符号不同。

那么函数StretchDIBits将创建位图的镜像。

如果NsrcWidth和NdestWidth符号不同,那么函数将沿着X轴创建位图镜像。

如果NsrcHeight和NdestHeight符号不同,那么函数将沿着Y轴创建位图镜像。

  如果BITMAPINFOHEADER结构中的成员biCompression为BI_JPEG,那么参数lpBits指向的是一个包含JPEG图像的缓冲区。

BITMAPINFOHEADER结构中的biSizeImage成员指定了该缓冲区的大小。

参数iUsage必须设为DIB_RGB_COLORS。

dwRop必须设为SRCCOPY。

  如果BITMAPV4HEADER结构中的成员bV 4Compression为BI_JPEG,那么参数lpBits指向的是一个包含JPEG图像的缓冲区。

BITMPV4HEADER结构中的bV4SizeImage成员指定了该缓冲区的大小。

参数iUsage必须设为DIB_RGB_COLORS。

参数dwRop必须设为SRCCOPY。

  如果BITMAPV5HEADER结构中的成员bV 5Compression为BI_JPEG,那么参数lpBits指向的是一个包含JPEG图像的缓冲区。

BITMPV5HEADER结构中的bV5SizeImage成员指定了该缓冲区的大小。

参数iUsage必须设为DIB_RGB_COLORS。

dwRop必须设为SRCCOPY。

  为确保打印时可以有正确的图元文件假脱机操作。

应用程序应在调用StretchDIBits函数之前调用CHECKJPEGFORMAT转义符,以确认打印机识别JPEG图像。

  ICM:执行颜色管理。

如果指定的BITMAPINFO结构中的bmiHeader不包含BITMAPV4HEADER或BITMAPV5HEADER,那么当前设备环境的颜色配置(profile)被用作源颜色配置(profile)。

如果没有颜色档案,那么就使用RGB。

如果指定的BITMAPINFO结构中的成员bmiHeader包含了BITMAPV4HEADER或BITMAPV5HEADER,那么将把位图标头中指定的颜色配置(profile)用作源颜色配置。

数脉科技:六月优惠促销,免备案香港物理服务器,E3-1230v2处理器16G内存,350元/月

数脉科技六月优惠促销发布了!数脉科技对香港自营机房的香港服务器进行超低价促销,可选择30M、50M、100Mbps的优质bgp网络。更大带宽可在选购时选择同样享受优惠,目前仅提供HKBGP、阿里云产品,香港CN2、产品优惠码续费有效,仅限新购,每个客户可使用于一个订单。新客户可以立减400元,或者选择对应的机器用相应的优惠码,有需要的朋友可以尝试一下。点击进入:数脉科技官方网站地址数脉科技是一家成...

盘点AoYoZhuJi傲游主机商8个数据中心常见方案及八折优惠

傲游主机商我们可能很多人并不陌生,实际上这个商家早年也就是个人主机商,传说是有几个个人投资创办的,不过能坚持到现在也算不错,毕竟有早年的用户积累正常情况上还是能延续的。如果是新服务商这几年确实不是特别容易,问到几个老牌的个人服务商很多都是早年的用户积累客户群。傲游主机目前有提供XEN和KVM架构的云服务器,不少还是亚洲CN2优化节点,目前数据中心包括中国香港、韩国、德国、荷兰和美国等多个地区的CN...

标准互联(450元)襄阳电信100G防御服务器 10M独立带宽

目前在标准互联这边有两台香港云服务器产品,这不看到有通知到期提醒才关注到。平时我还是很少去登录这个服务商的,这个服务商最近一年的促销信息比较少,这个和他们的运营策略有关系。已经从开始的倾向低价和个人用户云服务器市场,开始转型到中高端个人和企业用户的独立服务器。在这篇文章中,有看到标准互联有推出襄阳电信高防服务器100GB防御。有三款促销方案我们有需要可以看看。我们看看几款方案配置。型号内存硬盘IP...

stretchdibits为你推荐
ddr2内存价格DDR2比DDR先进,可是价钱怎么还是DDR2便宜软银支付软银支付是帮忙还信用卡的吗,可靠吗朱祁钰和朱祁镇哪个好大家怎么看明英宗和明代宗音乐播放器哪个好最好的音乐播放器是什么录音软件哪个好什么软件用来录音更好?手机音乐播放器哪个好手机音乐播放器音质好的APP是那款网页传奇哪个好玩有什么好玩的传奇类网页游戏?飞信空间登录关于飞信登陆方式考生个人空间登录湖南自考所有成绩查询怎么查什么叫dns服务器DNS服务器是什么东东?
域名信息查询 万网域名解析 cn域名个人注册 idc测评网 php主机 12306抢票攻略 赞助 91vps 国外代理服务器软件 银盘服务 香港亚马逊 服务器是干什么用的 西安主机 服务器论坛 atom处理器 成都主机托管 服务器防御 镇江高防服务器 .htaccess e-mail 更多