MFC CView 顯示灰度圖示例
實現灰度貼圖,強調3個點:
1) CView定時重新整理其顯示,這在OnTimer裡實現:
::SetStretchBltMode(m_dcMem.GetSafeHdc(), COLORONCOLOR);
StretchDIBits(m_dcMem.GetSafeHdc(), 0,0,m_iWidth, m_iHeight, 0,0, m_iWidth, m_iHeight,
(LPBYTE)m_pData, (BITMAPINFO *)m_pInfoBmp, DIB_RGB_COLORS, SRCCOPY);
而為了讓DC明白你要畫的是灰度圖,而不是3色彩圖的辦法,是在StretchDIBits()函式裡指定BITMAPINFO變數:
((BITMAPINFO *)m_pInfoBmp)->bmiHeader.biWidth = m_iWidth;
((BITMAPINFO *)m_pInfoBmp)->bmiHeader.biHeight = 0 - m_iHeight;
上面兩行語句在OnSize裡實現。之所以biHeight是負值,因為BITMAPINFO預設是把圖片最底下一行,放到bmp檔案的開頭儲存。所以,為了正常顯示灰度圖,而不是首尾倒置,要把biHeight設為負數。
2) m_bmpMem不能通過CreateCompatibleBmp實現,只能用下述辦法:
HINSTANCE hInstnc = AfxFindResourceHandle(MAKEINTRESOURCE(IDB_BITMAP1), RT_BITMAP); m_bmpMem = (HBITMAP)LoadImage(hInstnc, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, m_iWidth, m_iHeight, LR_DEFAULTCOLOR | LR_CREATEDIBSECTION);
3) OnDraw()裡面的如下程式碼必不可少:
void CGrayScaleView::OnDraw(CDC* pDC) { CGrayScaleDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; CDC tmpDC; tmpDC.CreateCompatibleDC(pDC); tmpDC.SelectObject(m_bmpMem); // TODO: 在此處為本機資料新增繪製程式碼 pDC->BitBlt(0,0,m_iWidth, m_iHeight, &tmpDC, 0,0, SRCCOPY); tmpDC.DeleteDC(); }
效果:
相關推薦
MFC CView 顯示灰度圖示例
實現灰度貼圖,強調3個點: 1) CView定時重新整理其顯示,這在OnTimer裡實現: ::SetStretchBltMode(m_dcMem.GetSafeHdc(), COLORONCOLOR); StretchDIBits(m_dcMem.GetSafe
Opencv入門筆記(1):影象載入、顯示、儲存、轉換灰度圖
影象載入、顯示、儲存函式: 1 影象載入函式:imread() Mat imread(const string& filename, int flags=1); const string&型別的filename為載入影象的路徑(
OpenCV--影象的反色與灰度圖顯示
對於單通道影象: void Invert1(){ Mat src,dest; src = imread("lena.jpg"); if(!src.data){
C# PictureBox 顯示單通道灰度圖
// 定義灰度調色盤 System.Drawing.Imaging.ColorPalette GreyColorPalette = null; // 定義新Bitmap影象 System.Draw
C#getPixel和內存法讀取灰度圖信息
max post scan ppa private p s pda unlock bsp getPixel方法: private int getPixels(Bitmap bmpobj) { int[,] data
灰度圖像的直方圖
bst line [] 數據 mat == str body system 主要代碼如下: package chapter6; import java.awt.*; import java.awt.geom.Rectangle2D; import java.awt.imag
opencv生成灰度圖並保存
other ims int empty ray size AC ret out #include <opencv2/opencv.hpp>#include <iostream> using namespace cv;using namespace s
灰度圖的直方圖均衡化(Histogram Equalization)原理與 Python 實現
p { margin-bottom: 0.1in; direction: ltr; line-height: 120%; text-align: justify; orphans: 0; widows: 0 } 原理 直方圖均衡化是一種通過使用影象直方圖,調整對比度的影象處理方法;通過對影象的強度(i
opencv讀取圖片並轉化為灰度圖,並調整視窗大小
Mat src_color = imread(路徑名);//讀取原彩色圖 int c=src_color.cols/2; int r=src_color.rows/2; Mat src_gray;//彩色影象轉化成灰度圖 cvtColor(src_color, src_gray,
opencv將灰度圖轉為彩色圖
使用opencv將一幅灰度圖轉為彩色圖。 使用函式:cvtColor(); Mat imgGray= imread("gray.jpg",0); Mat imgRGB; cvtColor(
灰度圖(IR 圖)轉成 RGB 圖預覽,畫面出現光斑/黃斑問題解決
一、背景 存在一個 IR 圖(紅外線 Infrared Radiation),需要在頁面上顯示出來,IR 圖片格式是 gray8,即 8 位的灰度圖。 Android 上的 Bitmap 圖片格式使用的是 ARGB_8888,所以需要把灰度圖轉 ARGB 圖,每個通道都為 8 位
使用K-means演算法聚類灰度圖
github資料集: 智慧演算法的課件和參考資料以及實驗程式碼 我們可以用k-means演算法將灰度圖分成N個梯度 我們知道,一般的彩色影象指的是在RGB顏色空間下的影象,這樣的影象三個通道分別是R(red)G(green)B(blue)。而灰度圖指的是單通道的,將三通道的影象
基於FPGA的彩色圖轉灰度圖演算法
一、演算法基礎 對於彩色轉灰度,有一個很著名的心理學公式:Gray = R0.299 + G0.587 + B*0.114; 來自於RGB888 to YCbCr的演算法公式,我們可以直接把演算法移植到FPGA上,但是我們都知道FPGA無法進行浮點運算,所以我們採取將整個式子右端先都擴大
esp32~外接攝像頭OV7255 灰度圖
1. 硬體接線 如下圖,github上說接線儘可能短不然噪音會很大,於是我把杜邦線給剪了又連上。 按照下面接線,使能端和地並上一個電容,這個電容用來幹嘛的(問過大佬,我又忘了。。) 2. 實際效果 3. 分析不能正常執行的原因 由於目前經驗不足,也摸不著底,不清楚d
opencv讀取影象畫素值讀取並儲存到txt檔案(二)灰度圖
#include "stdafx.h" #include"cv.h" #include <stdlib.h> #include <stdio.h> #include <math.h> #include <fstream> #include &l
html 影象處理 灰度圖和浮雕圖類PS
html5 的canvas還有一些很酷炫的效果,接下來講的是canvas對畫素的處理,雖然略有些複雜,但實現出的效果,還是很讚的~~。 為了不讓大家失望,先強調一句:下列效果需呼叫getImageData(),而這個方法會被某些瀏覽器阻止,如
利用GDAL儲存bmp格式的灰度圖(一)
GDAL是處理地理資訊的有力工具。從這篇部落格開始,我分3篇來介紹如何利用GDAL來儲存bmp格式的灰度圖。 第一篇是一個最簡單的例子:從TCP端接收資料,然後通過GDAL儲存為本地的bmp灰度檔案。這個例子有個缺點:GDAL要求資料每行位元組數被4整除,這個程式沒有對這個要求加保護措施。這個問
利用GDAL儲存bmp格式的灰度圖(二)
接著上一篇。假如灰度圖的寬度不是4的整數倍,如何將這樣的圖片儲存到本地bmp檔案中?下圖是一個寬度447的圖片 這個447x340的影象不能 像上一篇那樣儲存為bmp,因為photoshop會自動在bmp檔案裡補齊4位元組,保證圖片滿足bmp格式要求。所以我將這個圖片儲存為ra
opencv圖片處理(三):得到圖片的灰度圖和直方圖
1.得到直方圖和灰度圖 # -*- coding: utf-8 -*- # !/usr/bin/env python # @Time : 2018/11/19 15:56 # @Author : xhh # @Desc : 得到灰度圖以及直方圖 # @File : openc
[原始碼和文件分享]基於Qt和OpenCV實現彩色圖和灰度圖的轉換
一、實驗目的與要求 1.1 目的 熟悉Qt視覺化開發,理解C++的面向物件思想 熟悉Qt和Opencv開發環境搭建 瞭解Qt訊息機制 初步理解Opencv的用法 學會使用c++異常處理 1.2 要求 使用Qt編寫一程式,點