1.原始問題:
創(chuàng)新互聯(lián)建站自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元滎陽做網(wǎng)站,已為上家服務(wù),為滎陽各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
src = imread("**.jpg"); GpuMat srcImg(src); GpuMat hist; gpu::calcHist(srcImg,hist)
使用imread載入圖像后,
再導入到GpuMat中:
用calcHist處理srcImg時候出現(xiàn)了內(nèi)存異常。
后來發(fā)現(xiàn)是calcHist只能處理CV_8UC1像素類型的圖像,但是src的像素不是CV_8UC1。
再嘗試使用covertTo和setTo來轉(zhuǎn)換src的像素類型,但是沒用成功。
經(jīng)過調(diào)試發(fā)現(xiàn),src的通道是3個。
然后代碼修改成以下以后成功:
src = imread("**.jpg",CV_LOAD_IMAGE_GRAYSCALE); if(src.type != CV_8UC1) { src.covertTo(src,CV_8UC1); } GpuMat srcImg(src); GpuMat hist; gpu::calcHist(srcImg,hist)
在imread的時候,src存儲的就是一張單通道圖像。
再使用covertTo轉(zhuǎn)換src的像素類型。
參考:
http://blog.csdn.net/tcm_zhangpeng/article/details/39084103