C_and_CPP 板


LINE

※ 引述《GN00505257 (...)》之铭言: 仅针对红色部份进行解说 注:还不太熟怎样用颜色去做强调... : #include "stdafx.h" : #include <cv.h> : #include <highgui.h> : int main( int argc, char** argv ) { : IplImage* image; : image=cvLoadImage("image", 1); : { : // Compute the HSV image and decompose it into separate planes. : // : IplImage* hsv = cvCreateImage( cvGetSize(image), 8, 3 ); : cvCvtColor( image, hsv, CV_BGR2HSV ); : IplImage* h_plane = cvCreateImage( cvGetSize(image), 8, 1 ); : IplImage* s_plane = cvCreateImage( cvGetSize(image), 8, 1 ); : IplImage* v_plane = cvCreateImage( cvGetSize(image), 8, 1 ); : IplImage* planes[] = { h_plane, s_plane }; : cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); : // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 对於以上cvCvtPixToPlane, 内容在於把读取到的image, 透过 cvCvtColor将image转换为HSV, 透过cvCvtPixToPlane转换到前面 所设定的h_plane, s_plane, v_plane. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : cvCalcHist( planes, hist, 0, 0 ); //Compute histogram // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 这边在於利用cvCalcHist提供计算Historgram的函式, 可以把 planes所指向的影像之Historgram存放於CvHistogram的结构中, 至於後面参数部份, 请参阅Doc ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : cvNormalizeHist( hist, 1.0 ); //Normalize it // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 如果有学过影像处理, 应该都会知道Histogram的正规化, 这函式 就是在处理这些东西 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : // Create an image to use to visualize our histogram. : // : int scale = 10; : IplImage* hist_img = cvCreateImage(cvSize( h_bins * scale, s_bins * scale ) : ,8 , 3); : cvZero( hist_img ); : // populate our visualization with little gray squares. : // : float max_value = 0; : cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 ); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 这函式, 可以直接取得CvHistogram中最大的元素或是最小元素 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : for( int h = 0; h < h_bins; h++ ) { : for( int s = 100; s < s_bins; s++ ) { : float bin_val = cvQueryHistValue_2D( hist, h, s ); : int intensity = cvRound( bin_val * 255 / max_value ); : cvRectangle( : hist_img, : cvPoint( h*scale, s*scale ), : cvPoint( (h+1)*scale - 1, (s+1)*scale - 1), : CV_RGB(intensity,intensity,intensity), : CV_FILLED : ); : } : } ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 这部份应该是你的死角, 简单说他只是把Histogram藉由画图表示出来而已. 主要是将数值量化为你的视窗可以装得范围, 拿笔起来算一下应该就会比较 明白, cvRectangle是在绘图矩形, 但我认为cvRect应该也有同样效果. 看 每个人的取舍. 这边就是将量化後的数值进行座标转换到视窗上, 要注意 绘图的方向是从左上角开始计算或是右下角开始计算. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 以上, 若有遗漏或是错误的地方, 烦请指教更正, 谢谢. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.124.182.10
1F:→ Jockey66666:cvRect不能绘图 =) 08/14 10:15
2F:→ gmuooo:cvDrawRect ... XD, 没注意到, 谢谢。 08/14 14:19
3F:→ Jockey66666:#define cvDrawRect cvRectangle 是一样的 08/14 14:49
4F:推 yyc1217:cvCvtColor = cvSplit 文件里也有写 08/15 02:00
5F:→ GN00505257:感谢你...稍微有点头绪了 08/16 01:43







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP